如何设置checkbox.isChecked而不引发事件

时间:2013-05-16 18:43:17

标签: c# wpf checkbox

有没有办法检查CheckBox而不运行与检查相关的代码?只是为了视觉外观。

编辑:

private void normalCheck_Checked(object sender, RoutedEventArgs e)
{
    normal();
}

想象一下,我想设置normalCheckBox.IsChecked=true;但不提高事件。这可能吗?

4 个答案:

答案 0 :(得分:40)

一种方法是分离事件处理程序,设置IsChecked属性,然后重新附加它。

myCheckbox.Checked -= myCheckbox_Checked;
myCheckbox.IsChecked = true;
myCheckbox.Checked += myCheckbox_Checked;

答案 1 :(得分:7)

您可以使用Click事件代替Checked,并使用如下所示的复选框状态:

private void normalCheck_Click(object sender, RoutedEventArgs e)
{
    if (normalCheck.IsChecked ?? false) { normal(); }
}

然后,使用normalCheck.IsChecked = true;不会引发此事件。它只会通过点击提出。

注意:空合并运算符(??)是必需的,因为IsChecked返回bool?类型,可以为null。

答案 2 :(得分:0)

如果你指的是在不提出“_Checked”事件的情况下更改已检查状态,则可能必须使用参数覆盖事件处理程序,以告诉它跳过事件。

相关答案:Change Checkbox value without raising event

答案 3 :(得分:0)

对于未选中的事件:(基于@keyboardP的解决方案)

myCheckbox.Unchecked -= myCheckbox_Unchecked;
myCheckbox.IsChecked = false;
myCheckbox.Unchecked += myCheckbox_Unchecked;