如何设置复选框.isChecked而不引发事件

本文关键字:事件 isChecked 复选框 何设置 设置 | 更新日期: 2023-09-27 18:14:12

是否有一种方法可以检查CheckBox而不运行与检查相关的代码?只是为了美观。

编辑:

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

假设我想设置normalCheckBox.IsChecked=true;,但不引发事件。这可能吗?

如何设置复选框.isChecked而不引发事件

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

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

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

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

那么,使用normalCheck.IsChecked = true;将不会引发此事件。

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

For Unchecked Event:(基于@keyboardP的解)

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

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

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