C#计时器;控件移动;获取鼠标坐标;事件调用事件;

来源:互联网 发布:化工制药知乎 编辑:程序博客网 时间:2024/05/17 03:02

目的我要完成的目的是,做一个计时器,显示时间的控件可以任由我移动,随意改变显示时间字体的大小。双击时间控件,置0重新开始;单击时间控件,暂停,再单击,继续。


首先是已经完成的界面:






一、获取鼠标相对于窗体左上角的位置坐标

         Point p=this.PointToClient(Control.MousePosition);

       这一句代码是移动控件的核心代码


二、事件调用事件

       为了实现,当我们按下鼠标时,触发MouseMove事件;

       (1)为显示时间的控件建一个MouseDown事件,当事件触发的时候,再为此控件建立一个MouseMove事件;

       (2)为显示时间的控件建一个MouseUp事件,当事件触发的时候,删除此控件的MouseMove事件;

       (3)MouseMove事件中代码就是获取鼠标相对于窗体左上角的坐标,然后做简单的处理,作为显示时间控件的坐标。

          三个事件代码如下:

         

        private void label1_MouseDown(object sender, MouseEventArgs e)        {            this.label1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label1_MouseMove);        }        private void label1_MouseUp(object sender, MouseEventArgs e)        {            this.label1.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.label1_MouseMove);                  }        private void label1_MouseMove(object sender, MouseEventArgs e)        {            Point p=this.PointToClient(Control.MousePosition);            label1.Location = new Point(p.X-label1.Width/2,p.Y-label1.Height*2/3);        }

这个程序的主要代码:


using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace Time{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        int F = 0;        int Count = 0;        int F2 = 0;        int Count2 = 0;        private void Form1_Load(object sender, EventArgs e)        {            label1.Text = F.ToString() + " : " + Count.ToString();                               }        public void BgChange()        {            this.BackColor = Color.Red;        }        private void timer1_Tick(object sender, EventArgs e)        {            Count++;            if (Count == 60)            {                F++;                Count = 0;            }            label1.Text = F.ToString()+" : "+Count.ToString();            if(F<F2)                this.BackColor = DefaultBackColor;            if (F == F2 && Count == Count2)            {                label1.Text = "STOP";                timer1.Enabled = false;                BgChange();                F = 0;                Count = 0;            }        }        private void button1_Click(object sender, EventArgs e)        {            timer1.Enabled = true;            Count = 0;            F = 0;            this.BackColor = DefaultBackColor;            F2 = (int)numericUpDown1.Value;            Count2 = (int)numericUpDown2.Value;           // MessageBox.Show(F2.ToString() + Count2.ToString());        }        private void button2_Click(object sender, EventArgs e)        {            if (timer1.Enabled == true)            {                timer1.Enabled = false;                button2.Text = "继续";            }            else            {                timer1.Enabled = true;                button2.Text = "暂停";            }                  }        //改变字体样式        private void toolStripButton1_Click(object sender, EventArgs e)        {                    }        //改变字体样式        private void toolStripButton2_Click(object sender, EventArgs e)        {            fontDialog1.Font = label1.Font;            if (fontDialog1.ShowDialog() == DialogResult.OK)            {                label1.Font = fontDialog1.Font;            }        }        private void label1_DoubleClick(object sender, EventArgs e)        {                        button1_Click(sender, e);        }        private void label1_Click(object sender, EventArgs e)        {            if (timer1.Enabled == false)            {                timer1.Enabled = true;            }            else            {                timer1.Enabled = false;            }        }        private void toolStripButton1_Click_1(object sender, EventArgs e)        {            about s = new about();            s.ShowDialog();        }        private void label1_MouseDown(object sender, MouseEventArgs e)        {            this.label1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label1_MouseMove);        }        private void label1_MouseUp(object sender, MouseEventArgs e)        {            this.label1.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.label1_MouseMove);                  }        private void label1_MouseMove(object sender, MouseEventArgs e)        {            Point p=this.PointToClient(Control.MousePosition);            label1.Location = new Point(p.X-label1.Width/2,p.Y-label1.Height*2/3);        }                   }}



请多多指正!!




原创粉丝点击