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

Stu*_*urm 21 c# wpf checkbox

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

编辑:

private void normalCheck_Checked(object sender, RoutedEventArgs e)
{
    normal();
}
Run Code Online (Sandbox Code Playgroud)

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

key*_*rdP 42

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

myCheckbox.Checked -= myCheckbox_Checked;
myCheckbox.IsChecked = true;
myCheckbox.Checked += myCheckbox_Checked;
Run Code Online (Sandbox Code Playgroud)

  • 我相信你可以将它缩写为`myCheckbox.Checked - = myCheckbox_Checked;`(和其他类似的). (4认同)

Cal*_*ins 7

您可以使用该Click事件而不是Checked使用复选框的状态,如下所示:

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

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

注意:null-coalescing operator(??)是必需的,因为IsChecked返回一个bool?可能为null 的类型.