鼠标点击面板跳过点击次数

时间:2013-11-29 00:01:41

标签: c# .net winforms

我在一个带有MouseClick事件的表单上有一个Panel。问题是每次单击面板时都不会触发MouseClick事件。当它跳过点击时它是随机的。

我想我可以使用MouseDown和MouseUp事件,但我想知道为什么会发生这种情况......(当我使用“Click”事件时我遇到同样的问题)

我在项目之外用一个非常简单的测试项目对它进行了测试,它仍然在做:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        var panel = new Panel
        {
            Location = new Point(10, 10), 
            Size = new Size(200, 200),
            BackColor = Color.Red
        };
        panel.MouseClick += panel_MouseClick;
        //panel.Click += panel_Click; --Also skips clicks.

        this.Controls.Add(panel);
    }

    void panel_MouseClick(object sender, MouseEventArgs e)
    {
        Console.WriteLine("Click");
    }
}

1 个答案:

答案 0 :(得分:3)

Panel类已打开ControlStyles.StandardDoubleClick。所以你很可能会生成MouseDoubleClick事件,因为你没有订阅事件,所以你看不到它们。

除了关闭样式标志和订阅该事件之外,还有多种方法可以解决这个问题,例如,MouseDown事件是另一种选择。关闭样式需要从Panel派生自己的类,只需要一个调用SetStyle()的构造函数。