如何设置复选框.isChecked而不引发事件
本文关键字:事件 isChecked 复选框 何设置 设置 | 更新日期: 2023-09-27 18:14:12
是否有一种方法可以检查CheckBox
而不运行与检查相关的代码?只是为了美观。
private void normalCheck_Checked(object sender, RoutedEventArgs e)
{
normal();
}
假设我想设置normalCheckBox.IsChecked=true;
,但不引发事件。这可能吗?
一种方法是分离事件处理程序,设置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"事件的情况下更改已检查状态,则可能必须使用参数重写事件处理程序,以告诉它是否跳过该事件。
相关答案:更改复选框值而不引发事件