I have textbox and I'm changing the text inside it when lostFocus
is fired but that also fires up the textChanged
event, which I'm handling but I don't want it to be fired in this one case, how can I disable it here?
The idea with bool
is good but I have couple of textboxes and I use the same event for all of them, so it's not working exactly as I want the way I want.
Now it's working! :
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;
}
I managed to put the bool
back on true
after editing the text and it works so thx guys :]
Simpliest way that I can think of is using conditnional bool
variable.
When you are going to set the text on LostFocus
set it to true
and inside textChanged
event handler check if that bool
variable is true
, do not do nothing.