C#复选框和鼠标点击事件
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 而不会触发鼠标单击事件。我想将事件延迟到第二次鼠标单击而不是第一次。
我试过以下方法:
- for 循环
- 使用 if 语句点击 == 2
- 正在订阅但不知所措
只需使用一个布尔变量作为标志。
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
事件来选中或取消选中 CheckBox
,然后您可以将 MouseClick
事件用于其他内容。
您可以订阅 CheckedChanged
活动,而不是 Click
活动:
Handler 看起来和您的完全一样:
private void uxMouseCopyCheckBox_CheckedChanged(object sender, EventArgs e)
{
if (!uxMouseCopyCheckBox.Checked)
{
MessageBox.Show("Test");
uxMouseCopyCheckBox.Checked = false;
}
}
唯一的区别是我们希望仅在第二次单击时显示消息框,这样当您取消选中该复选框时。
不过要小心,如果您更改复选框的默认状态,它将不再起作用。
如果你想要一个真正强大的解决方案,Grant 的解决方案是恕我直言最好的,我的只是在这里向你展示如何调整你的代码以使其工作
我正在自学 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 而不会触发鼠标单击事件。我想将事件延迟到第二次鼠标单击而不是第一次。
我试过以下方法:
- for 循环
- 使用 if 语句点击 == 2
- 正在订阅但不知所措
只需使用一个布尔变量作为标志。
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
事件来选中或取消选中 CheckBox
,然后您可以将 MouseClick
事件用于其他内容。
您可以订阅 CheckedChanged
活动,而不是 Click
活动:
Handler 看起来和您的完全一样:
private void uxMouseCopyCheckBox_CheckedChanged(object sender, EventArgs e)
{
if (!uxMouseCopyCheckBox.Checked)
{
MessageBox.Show("Test");
uxMouseCopyCheckBox.Checked = false;
}
}
唯一的区别是我们希望仅在第二次单击时显示消息框,这样当您取消选中该复选框时。
不过要小心,如果您更改复选框的默认状态,它将不再起作用。
如果你想要一个真正强大的解决方案,Grant 的解决方案是恕我直言最好的,我的只是在这里向你展示如何调整你的代码以使其工作