我点了一次鼠标,MouseDown却执行了两次,很疑惑
我在Picturebox1上点了一下鼠标,PictureBox1_MouseDown 却执行了两次,很疑惑
而且,并不是每次都执行2次,大多数时候执行1次,偶尔执行2次。
bool mousedown;
public void try ()
{
PictureBox1.MouseDown += new MouseEventHandler(PictureBox1_MouseDown);
//循环等待鼠标事件发生
while (false == mousedown)
Application.DoEvents(); mousedown = false;
}
public void PictureBox1_MouseDown(object sender, MouseEventArgs e)
{
PictureBox target = (PictureBox)sender;
target.MouseDown -= PictureBox1_MouseDown;
mousedown = true;
}
public void Play()
{
mousedown = false;
for (int i = 0; i < 10; i++)
{
try ();
其他操作
}
}
另外,我想让发生鼠标事件之后在执行一些操作,所以我用
while (false == mousedown)
Application.DoEvents();
检测是否发生鼠标事件,不知是否合适?
------解决方案--------------------不明白你为什么要这么写
估计是委托链的问题
你将
PictureBox1.MouseDown += new MouseEventHandler(PictureBox1_MouseDown);
执行两遍他就会在你点一下鼠标时触发两次你的回调函数,
也没有必要使用
//循环等待鼠标事件发生
while (false == mousedown)
Application.DoEvents();
来等待,其实在你注册事件后系统本身也不会停下来
另外,我想让发生鼠标事件之后在执行一些操作,所以我用
while (false == mousedown)
Application.DoEvents();
检测是否发生鼠标事件,不知是否合适?
直接放在PictureBox1_MouseDown函数里不就可以么?
------解决方案--------------------直接把要执行的代码放到
public void PictureBox1_MouseDown(object sender, MouseEventArgs e)
{
。。。
}
里就可以
程序等待不用你自己控制
------解决方案--------------------PictureBox1_MouseDown改为PictureBox1_clientclick试试