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