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

C# 如何设置checkbox.isChecked而不引发事件,c#,wpf,checkbox,C#,Wpf,Checkbox,是否有一种方法可以选中复选框,而不运行与该复选框关联的代码?只是为了视觉效果 编辑: 假设我想设置normalCheckBox.IsChecked=true但不引发事件。可能吗?一种方法是分离事件处理程序,设置IsChecked属性,然后重新连接它 myCheckbox.Checked -= myCheckbox_Checked; myCheckbox.IsChecked = true; myCheckbox.Checked += myCheckbox_Checked; 如果您指的是在不引发“

是否有一种方法可以选中
复选框
,而不运行与该复选框关联的代码?只是为了视觉效果

编辑:


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

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

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

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


相关回答:

您可以使用
单击事件而不是
选中事件,并使用复选框的状态,如下所示:

private void normalCheck_Click(object sender, RoutedEventArgs e)
{
    if (normalCheck.IsChecked ?? false) { normal(); }
}
然后,使用
normalCheck.IsChecked=true不会引发此事件。它将仅通过单击来引发

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

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


他希望通过编程设置复选框的“Checked”属性,而不引发Checked事件,即使他已经订阅了Checked事件正负号是怎么回事?我不明白。看起来很有趣。@iMohammad-The
-
将从
myCheckbox
控件中分离事件处理程序。因此,在
选中事件之后通常会触发的任何代码都不会被调用(因为您已经删除了事件处理程序)。
+
只是将事件处理程序重新连接,这样,从现在开始,如果触发了
选中的
事件,那么事件处理程序代码也会被调用。我相信您可以将其缩写为
myCheckbox.Checked-=myCheckbox\u Checked(另一个类似)。我必须在左边对“-=”和“+=”行进行修改:
myCheckbox.CheckChanged-=myCheckbox\u Changed
(CheckChanged而不是Checked)@iluomo-只是为了澄清,
Checked
是针对WPF框架的。我假设您使用的是WinForms,这就是为什么您需要使用
CheckChanged
而不是标题此答案是否提供了任何新内容?也许它为您提供了任何新内容
private void normalCheck_Click(object sender, RoutedEventArgs e)
{
    if (normalCheck.IsChecked ?? false) { normal(); }
}
myCheckbox.Unchecked -= myCheckbox_Unchecked;
myCheckbox.IsChecked = false;
myCheckbox.Unchecked += myCheckbox_Unchecked;