阻止复选框选中事件
本文关键字:事件 复选框 | 更新日期: 2023-09-27 18:35:44
我有一个checkbox
,我想问用户是否确定,否则我将取消操作。
我尝试了Click
事件,但事实证明它仅在CheckedChanged
事件之后被调用。
我认为我至少可以通过在CheckedChanged
事件中询问用户来"丑陋"地做到这一点,但是如果他希望取消,我需要更改再次引发事件的Checked
值。
我希望使用此解决方案避免的另一件事是,即使在用户回复之前,刻度线也出现在checkbox
中。
我正在寻找在CheckedChanged
之前发生的事件或防止CheckedChanged
事件的方法。
将AutoCheck
设置为 false
. 并在 Click
事件中处理Checked
状态。
查找示例代码。它只是删除附加到复选框的事件并将其添加回来
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
checkBox1.CheckedChanged -= checkBox1_CheckedChanged;
checkBox1.Checked = false;
checkBox1.CheckedChanged += checkBox1_CheckedChanged;
}
}
加
起来就是Sievajet's
答案。
AutoCheck
属性设置为 false
,以防止在单击复选框时自动更新复选框的外观。
请参阅下面的AutoCheck
官方文档
获取或设置一个值,该值指示是否
System.Windows.Forms.CheckBox.Checked
或System.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;
}
}