我有一个textbox,当lostFocus
被触发时,我正在更改其中的文本,但这也触发了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
后,编辑文本和它的工作,所以thx家伙:]
5条答案
按热度按时间o2rvlv0m1#
只需删除事件处理程序,然后在完成所需操作后添加它。
ozxc1zmp2#
我能想到的最简单的方法是使用条件
bool
变量。当你要设置LostFocus
上的文本时,将其设置为true
,并在textChanged
事件处理程序中检查bool
变量是否为true
,不要什么都不做。ecbunoof3#
我觉得..我们可以用最好的方法和简单的方法来做这件事..!
pvcm50d14#
如果你有多个文本框,只需要使用一个字符串列表来存储状态为
DoNotFire
的文本框。您更新的代码(还改进了其他方面):
7ivaypg95#
我认为您也可以简单地使用UI中内置的“IsFocused”布尔值。
这样,您就不需要为每个输入使用唯一的bool。
高温