我在表单中遇到了 Capture 属性的奇怪行为。我将其设置为 true 并订阅表单中的鼠标单击事件,以检查每次在表单的客户区域内单击鼠标时是否正在触发事件。在一个带有表单和三个按钮的简单测试中,我看到捕获只在第一次尝试时才能正常工作,之后不会调用事件处理程序。这是代码:
public partial class Form1 : Form
{
public Form1()
{
//Form1 has three buttons that are created inside InitializeComponent. It also subscribes Form1_MouseClick handler to the MouseClick event of the Form
InitializeComponent();
// Setting Capture to true will force to handle any mouse click on any control in the form
Capture = true;
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
// This message box should appear after any click in the form or control inside it
MessageBox.Show("Click!");
}
}
我还尝试订阅 MouseCaptureChanged 事件以重新启用 Capture 属性到 true ,但没有成功。有人能解释一下这种行为的原因吗?