A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苟于伟 中级黑马   /  2013-5-5 14:00  /  3482 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 苟于伟 于 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事件,这是优先级的问题吗?
在代码如下:

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 张伟86 于 2013-5-5 14:52 编辑

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


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

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
1. 在C#中MouseEnter是指鼠标进入到这个控件的范围内时触发;
2. 在C#中MouseMove是指鼠标在这个控件范围内坐标改变就会连续不断的触发。
回复 使用道具 举报
我知道了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马