我在一个带有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");
}
}
答案 0 :(得分:3)
Panel类已打开ControlStyles.StandardDoubleClick。所以你很可能会生成MouseDoubleClick事件,因为你没有订阅事件,所以你看不到它们。
除了关闭样式标志和订阅该事件之外,还有多种方法可以解决这个问题,例如,MouseDown事件是另一种选择。关闭样式需要从Panel派生自己的类,只需要一个调用SetStyle()的构造函数。