当在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次3,...有没有人知道为什么会发生这种情况?日Thnx
答案 0 :(得分:0)
因为执行此
pictureBox1.MouseClick += myMouseClickEventFunction;
每次点击都会再次添加处理程序。这应该意味着,如果您单击一次,则添加一次并执行一次。但是通过第二次单击,您再次添加它,所以这次它将执行两次,这就是您的计数器增加到2的原因。您需要的是将您的点击处理程序移动到其他位置并仅将其注册一次,意味着移动它的最佳位置应该是在表单的初始化中。 (在public MainForm(){}
或您正在使用代码的任何形式)
P.S。:对不起英语很差,我希望你能理解我。