我有一个文本框,当失去焦点时改变其中的文本,但这也会触发textChanged
事件,我正在处理它,但我不想在这种情况下触发它,我该如何禁用它?
更新:
使用bool
的想法很好,但我有几个文本框,我对所有文本框使用相同的事件,所以它并不能像我想要的那样完全工作。
现在它可以工作了!:
private bool setFire = true;
private void mytextbox_LostFocus(object sender, RoutedEventArgs e)
{
if (this.IsLoaded)
{
System.Windows.Controls.TextBox textbox = sender as System.Windows.Controls.TextBox;
if(textbox.Text.ToString().Contains('.'))
{
textbox.Foreground = new SolidColorBrush(Colors.Gray);
textbox.Background = new SolidColorBrush(Colors.White);
setFire = false;
textbox.Text = "something else";
setFire = true;
}
}
}
private void mytextbox_TextChanged(object sender, TextChangedEventArgs e)
{
if ((this.IsLoaded) && setFire)
{
System.Windows.Controls.TextBox textbox = sender as System.Windows.Controls.TextBox;
if(textbox.Text.ToString().Contains('.'))
{
textbox.Foreground = new SolidColorBrush(Colors.White);
textbox.Background = new SolidColorBrush(Colors.Red);
}
}
setFire = true;
}
在编辑文本后,我成功地将 bool
改回了 true
,现在它可以正常工作了,谢谢大家 :]
private Dictionary<TextBox, bool> setFire = ...
- dkozl