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;