防止复选框已检查事件

时间:2014-12-30 16:34:24

标签: c# winforms checkbox

我有一个checkbox在检查时我想询问用户是否确定,如果不是,我会取消操作。
我尝试了Click事件,但事实证明它仅在CheckedChanged事件后被调用。
我想我至少可以通过询问CheckedChanged事件中的用户来“丑陋”,但是如果他想取消我需要更改Checked值,这会再次引发事件。<登记/> 我希望避免使用此解决方案的另一件事是,即使在用户回复之前,checkbox中也会显示“V”。我正在寻找在CheckedChanged之前发生的事件,如果此类事件存在阻止CheckedChanged事件的方法。
当然,任何其他想法都会很棒。

3 个答案:

答案 0 :(得分:13)

AutoCheck设为false。并处理Click事件中的已检查状态。

答案 1 :(得分:0)

查找示例代码。它只是删除附加到复选框的事件并将其添加回来 private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) { checkBox1.CheckedChanged -= checkBox1_CheckedChanged; checkBox1.Checked = false; checkBox1.CheckedChanged += checkBox1_CheckedChanged; } }

答案 2 :(得分:0)

最多添加Sievajet's个答案。

AutoCheck属性设置为false,以防止单击复选框时复选框的外观自动更新。

请参阅下面的AutoCheck的官方文档

获取或设置一个值,该值指示是否 System.Windows.Forms.CheckBox.CheckedSystem.Windows.Forms.CheckBox.CheckState值和System.Windows.Forms.CheckBox's System.Windows.Forms.CheckBox为 点击。

尝试下面的ClickEvent处理程序

private void checkBox_Click(object sender, EventArgs e)
{
   if (checkBox.Checked == false)
   {
     DialogResult result = MessageBox.Show("Confirmation Message", "Confirm", 
                           MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

     if (result == DialogResult.OK)
     {
         checkBox.Checked = true;
     }

   }
   else
   {
     checkBox.Checked = false;
   }
}