鼠标点击事件计数器在多次点击 VS C# 上乘以
本文关键字:VS 事件 计数器 鼠标 | 更新日期: 2025-02-18 03:08:10
在Visual Studio中使用clickevents时,我遇到了此错误:
private void pictureBox1_Click(object sender, EventArgs e)
{
Testcounter = 0;
pictureBox1.MouseClick += myMouseClickEventFunction;
}
private void myMouseClickEventFunction(object sender, MouseEventArgs e)
{
int x = colors.GetUpperBound(0) + 1;
int y = colors.GetUpperBound(1) + 1;
Testcounter++;
var point = new Point(e.X - pictureBox1.Width/2, e.Y - pictureBox1.Height/2);
for (int i = 0; i < x; i++)
{
for (int u = 0; u < y; u++)
{
if (cirkles[i, u].Contains(point))
{
changeIndex(i, u);
}
}
}
this.Refresh();
}
第一次单击图片框时,计数器值为1,第二次单击计数器值为2,第三次单击计数器值为3,...有谁知道为什么会发生这种情况?嘟
图1图2
因为通过执行这个
pictureBox1.MouseClick += myMouseClickEventFunction;
每次单击都会再次添加处理程序。这应该意味着,如果您单击它一次,则添加一次,它执行一次。但是通过第二次单击,您再次添加它,因此这次它将执行两次,这就是您的计数器增加到 2 的原因。您需要的是将单击处理程序移动到其他地方并仅注册一次,这意味着移动它的最佳位置应该是表单的初始化。(以public MainForm(){}
或您使用代码的任何形式(PS:对不起,英语不好,希望你能理解我。