MouseClickEvent计数器在多次单击时倍增VS C#

时间:2016-05-06 21:35:37

标签: c# visual-studio onclicklistener

当在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

pic1 pic2

1 个答案:

答案 0 :(得分:0)

因为执行此

pictureBox1.MouseClick += myMouseClickEventFunction;

每次点击都会再次添加处理程序。这应该意味着,如果您单击一次,则添加一次并执行一次。但是通过第二次单击,您再次添加它,所以这次它将执行两次,这就是您的计数器增加到2的原因。您需要的是将您的点击处理程序移动到其他位置并仅将其注册一次,意味着移动它的最佳位置应该是在表单的初始化中。 (在public MainForm(){}或您正在使用代码的任何形式) P.S。:对不起英语很差,我希望你能理解我。