【发布时间】:2013-06-26 16:30:54
【问题描述】:
最初这个问题把我带到这里: Disable firing TextChanged event
我想知道 jtmach 的回答是不是“干净”:
private void mytextbox_LostFocus(object sender, RoutedEventArgs e)
{
this.mytextbox.TextChanged -= this.myTextBox_TextChanged;
if(textbox.Text.ToString().Contains('.'))
{
textbox.Foreground = new SolidColorBrush(Colors.Gray);
textbox.Background = new SolidColorBrush(Colors.White);
}
this.mytextbox.TextChanged += this.myTextBox_TextChanged;
}
可以取消订阅TextChanged-events 在另一个这样的事件中吗?
或者它是否容易出错,因为在 LostFocus 期间可能会调用 TextChanged 事件(由用户或程序)?
【问题讨论】:
-
这只是我,但我会使用标志(即:
if(IsProcessing) return;)、锁或某种节流器(类似于反应式库中的节流器)。跨度> -
我个人会使用类似接受的答案来回答这个问题。我只在处理分配了处理程序的动态控件时删除处理程序。
-
没关系。并且没有 textchanged 不能从失去焦点中调用......或者至少我不明白如何
-
@SimonBelanger 我也是,这就是为什么我想知道这是否会失败;)
-
@MarkHall 你会如何推理?取消订阅事件并没有那么昂贵,而且它也可以阅读。