C# VS2010中无法触发button的MouseUp\MouseDown事件

时间:2020-12-27 10:20:02
各位: 

            现有一项目,要在用到button  按钮的MouseUp\MouseDown事件,要求在MouseDown时触发事件,同时在MouseUp时再触发一个事件。测试时发现只能触发MouseDown事件,不能触发MouseUp事件,也就是MouseUp事件中的代码没有执行,但如果单独触发MouseUp事件,(删除MouseDown事件代码),MouseUp事件中代码也可执行,不知为何,请各位指点下。谢谢

代码如下:
 
 private void button12_MouseUp(object sender, MouseEventArgs e)
        {
            MessageBox.Show("MouseUp");
        }

        private void button12_MouseDown(object sender, MouseEventArgs e)
        {
            MessageBox.Show("MouseDown");
        }

11 个解决方案

#1


以下开发平台是在XP系统下面 

#2


你showmessage之后焦点就失去了哈,

你把MessageBox.Show("MouseUp");改成 textBox1.Text = "up";之类的试试呢?

#3


MouserDown事件把前面的替换了。
你把MessageBox.show改为 button12.text="1" 和 button12.text="2",你就会知道。

#4


引用 2 楼 wg5945 的回复:
你showmessage之后焦点就失去了哈,

你把MessageBox.Show("MouseUp");改成 textBox1.Text = "up";之类的试试呢?


我是想在鼠标抬起时也触发mouseup事件,执行其中的代码哦 但测试是没有执行其中代码,

  private void button12_MouseUp(object sender, MouseEventArgs e)
        {
            int i = 0;
            int j = 0;
        }

        private void button12_MouseDown(object sender, MouseEventArgs e)
        {
            int i = 0;
            int j = 0;
        }


这样也是不行的的,我在其中有加入断点;

#5


同样的,你打了断点的话实际上原来在btn上面的焦点也失去了,懂么?

#6


该回复于2014-05-06 14:19:58被管理员删除

#7


引用 3 楼 u013789247 的回复:
MouserDown事件把前面的替换了。
你把MessageBox.show改为 button12.text="1" 和 button12.text="2",你就会知道。


我在两个事件中都有加入断点,但mouseup事件就没触发。我发觉是不是那里设置的问题,还是VS2010的问题,记得原先是可以实现这两个事件的啊,今天怎么就不行。

#8


你改了button12.text。
然后你运行程序,在按钮上点击鼠标,(点击不放,按钮显示为“1”;放开鼠标,按钮显示为“2”)

#9


引用 5 楼 wg5945 的回复:
同样的,你打了断点的话实际上原来在btn上面的焦点也失去了,懂么?



哦,原先是这样啊,测试了下,可以了。但还是不明白出现这种情况的详细原因,不知能否告知一下。谢谢

#10


引用 8 楼 u013789247 的回复:
你改了button12.text。
然后你运行程序,在按钮上点击鼠标,(点击不放,按钮显示为“1”;放开鼠标,按钮显示为“2”)


谢谢 可以实现了,但不知原理,可否细说一下。

#11


你放开点击后,就执行MouserDown,就把前面的覆盖了。单独用up事件可以,是因为后面没有。
也就一个 先后 顺序。。。

#1


以下开发平台是在XP系统下面 

#2


你showmessage之后焦点就失去了哈,

你把MessageBox.Show("MouseUp");改成 textBox1.Text = "up";之类的试试呢?

#3


MouserDown事件把前面的替换了。
你把MessageBox.show改为 button12.text="1" 和 button12.text="2",你就会知道。

#4


引用 2 楼 wg5945 的回复:
你showmessage之后焦点就失去了哈,

你把MessageBox.Show("MouseUp");改成 textBox1.Text = "up";之类的试试呢?


我是想在鼠标抬起时也触发mouseup事件,执行其中的代码哦 但测试是没有执行其中代码,

  private void button12_MouseUp(object sender, MouseEventArgs e)
        {
            int i = 0;
            int j = 0;
        }

        private void button12_MouseDown(object sender, MouseEventArgs e)
        {
            int i = 0;
            int j = 0;
        }


这样也是不行的的,我在其中有加入断点;

#5


同样的,你打了断点的话实际上原来在btn上面的焦点也失去了,懂么?

#6


该回复于2014-05-06 14:19:58被管理员删除

#7


引用 3 楼 u013789247 的回复:
MouserDown事件把前面的替换了。
你把MessageBox.show改为 button12.text="1" 和 button12.text="2",你就会知道。


我在两个事件中都有加入断点,但mouseup事件就没触发。我发觉是不是那里设置的问题,还是VS2010的问题,记得原先是可以实现这两个事件的啊,今天怎么就不行。

#8


你改了button12.text。
然后你运行程序,在按钮上点击鼠标,(点击不放,按钮显示为“1”;放开鼠标,按钮显示为“2”)

#9


引用 5 楼 wg5945 的回复:
同样的,你打了断点的话实际上原来在btn上面的焦点也失去了,懂么?



哦,原先是这样啊,测试了下,可以了。但还是不明白出现这种情况的详细原因,不知能否告知一下。谢谢

#10


引用 8 楼 u013789247 的回复:
你改了button12.text。
然后你运行程序,在按钮上点击鼠标,(点击不放,按钮显示为“1”;放开鼠标,按钮显示为“2”)


谢谢 可以实现了,但不知原理,可否细说一下。

#11


你放开点击后,就执行MouserDown,就把前面的覆盖了。单独用up事件可以,是因为后面没有。
也就一个 先后 顺序。。。