鼠标点击事件计数器在多次点击 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

鼠标点击事件计数器在多次点击 VS C# 上乘以

因为通过执行这个

pictureBox1.MouseClick += myMouseClickEventFunction;

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