黑马程序员技术交流社区

标题: 在winform中MouseEnter与MouseMove的区别? [打印本页]

作者: 苟于伟    时间: 2013-5-5 14:00
标题: 在winform中MouseEnter与MouseMove的区别?
本帖最后由 苟于伟 于 2013-5-6 20:31 编辑
  1. private void but2_MouseEnter(object sender, EventArgs e)
  2.         {
  3.             this.Text = "MouseEnter";//不会执行这个事件
  4.         }

  5.         private void but2_MouseLeave(object sender, EventArgs e)
  6.         {
  7.             this.Text = "MouseLeave";
  8.         }

  9.         private void but2_MouseMove(object sender, MouseEventArgs e)
  10.         {
  11.             this.Text = "MouseMove";
  12.         }
复制代码
在MouseMove事件中的(this.Text = "MouseMove";)与MouseEnter事件中的(this.Text = "MouseEnter";)在执行代码时,为什么两个件事只能是触发MouseMove事件,这是优先级的问题吗?
在代码如下:


作者: 张伟86    时间: 2013-5-5 14:49
本帖最后由 张伟86 于 2013-5-5 14:52 编辑

3个事件每一个都会执行,执行顺序是MouseEnter——>MouseMove——>MouseLeave。
给程序中的每个事件下断,就可以看到执行顺序,只是为了验证楼主提到的MouseEnter不会被执行,示例下图:


另外,程序运行后发现就没有显示过MouseEnter,是因为窗口标题修改为“MouseEnter”后,立刻执行MouseMove事件,就又修改为“MouseMove”了,只是我们看不到而已,不是未经过这一步。
你可以把MouseMove事件注释掉,然后查看窗口标题,会发现在未MouseLeave之前,就是"MouseEnter";

作者: 许庭洲    时间: 2013-5-5 20:51
1. 在C#中MouseEnter是指鼠标进入到这个控件的范围内时触发;
2. 在C#中MouseMove是指鼠标在这个控件范围内坐标改变就会连续不断的触发。
作者: 苟于伟    时间: 2013-5-6 20:30
我知道了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2