[英]C# checkbox and mouse click event
我正在自学C#,遇到了一个我似乎也找不到答案的问题。 我有一个窗体,当我单击鼠标复选框时,状态变为true,但也会立即触发鼠标单击事件,我的代码如下:
private void uxCheckBoxMouseClick(object sender, MouseEventArgs e)
{
//MouseEventArgs me = (MouseEventArgs) e;
if (uxMouseCopyCheckBox.Checked)
{
MessageBox.Show("Test");
uxMouseCopyCheckBox.Checked = false;
}
}
我已经搜索了堆栈溢出和Google,发现了类似的项目,但不是在C#中,但是在固定解决方案上没有运气。 我要执行的操作是使用第一次单击将复选框更改为true,而不会触发鼠标单击事件。 我想将事件延迟到第二次鼠标单击而不是第一次单击。
我尝试了以下方法:
只需将布尔变量用作标志即可。
private bool wasAlreadyClickedOnce;
private void uxCheckBoxMouseClick(object sender, MouseEventArgs e)
{
if (!wasAlreadyClickedOnce)
{
wasAlreadyClickedOnce = true;
return;
}
if (uxMouseCopyCheckBox.Checked)
{
MessageBox.Show("Test");
uxMouseCopyCheckBox.Checked = false;
}
}
除了Click
事件,您还可以订阅CheckedChanged
事件:
该处理程序看起来与您的完全一样:
private void uxMouseCopyCheckBox_CheckedChanged(object sender, EventArgs e)
{
if (!uxMouseCopyCheckBox.Checked)
{
MessageBox.Show("Test");
uxMouseCopyCheckBox.Checked = false;
}
}
唯一的不同是,我们希望仅在第二次单击时才显示“消息”框,以便您取消选中该复选框。
但是请注意,如果更改复选框的默认状态,它将不再起作用。
如果您想要一个真正健壮的解决方案,格兰特(Grant)的解决方案是最好的恕我直言,我只是在这里向您展示如何调整代码以使其工作
尝试使用Click
事件而不是CheckedChanged
事件来选中或取消选中CheckBox
,然后可以将MouseClick
事件用于其他内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.