[英]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.