25

有没有一种方法可以在CheckBox不运行与检查相关的代码的情况下进行检查?只是为了视觉外观。

编辑:

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

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

4

4 回答 4

50

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

myCheckbox.Checked -= myCheckbox_Checked;
myCheckbox.IsChecked = true;
myCheckbox.Checked += myCheckbox_Checked;
于 2013-05-16T18:47:49.533 回答
13

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

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

然后,使用normalCheck.IsChecked = true;. 它只会通过点击来提升。

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

于 2015-07-15T19:58:57.617 回答
0

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

相关答案:更改复选框值而不引发事件

于 2013-05-16T18:48:09.083 回答
0

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

myCheckbox.Unchecked -= myCheckbox_Unchecked;
myCheckbox.IsChecked = false;
myCheckbox.Unchecked += myCheckbox_Unchecked;
于 2020-11-05T07:45:53.493 回答