C# 防止复选框选中事件

C# 防止复选框选中事件,c#,winforms,checkbox,C#,Winforms,Checkbox,我有一个复选框,我想询问用户是否确定,否则我将取消操作 我尝试了Click事件,但结果表明它仅在CheckedChanged事件之后才被调用 我想我至少可以通过询问CheckedChanged事件中的用户来“丑陋”地完成这项任务,但如果他希望取消,我需要更改Checked值,再次引发事件的原因是什么 使用此解决方案我希望避免的另一件事是,即使在用户答复之前,复选框中也会出现勾号 我正在寻找在CheckedChanged之前发生的事件,或者防止CheckedChanged事件发生的方法 将Auto

我有一个
复选框
,我想询问用户是否确定,否则我将取消操作

我尝试了
Click
事件,但结果表明它仅在
CheckedChanged
事件之后才被调用

我想我至少可以通过询问
CheckedChanged
事件中的用户来“丑陋”地完成这项任务,但如果他希望取消,我需要更改
Checked
值,再次引发事件的原因是什么

使用此解决方案我希望避免的另一件事是,即使在用户答复之前,
复选框中也会出现勾号


我正在寻找在
CheckedChanged
之前发生的事件,或者防止
CheckedChanged
事件发生的方法

AutoCheck
设置为
false
。并在
单击事件中处理
选中的
状态。

查找示例代码。它只是删除附加到复选框的事件并将其添加回来

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
  if (checkBox1.Checked)
  {
    checkBox1.CheckedChanged -= checkBox1_CheckedChanged;
    checkBox1.Checked = false;
    checkBox1.CheckedChanged += checkBox1_CheckedChanged;
  }
}

加起来等于SiveAjet的回答

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

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

获取或设置一个值,该值指示
System.Windows.Forms.CheckBox.Checked
或者
System.Windows.Forms.CheckBox.CheckState
值和
System.Windows.Forms.CheckBox的
选中
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;
   }
}

工作很好,谢谢!