LostFocus方法多次射击

时间:2016-11-14 14:45:32

标签: c# wpf xaml

我有一个PUT我希望在程序失去焦点时验证它。我的方法可以解决一个问题,即一次又一次地触发事件(当用户输入无效日期时)。

这是我正在使用的方法;

MaskedTextBox

我进入private void onDateTextBox_LostFocus(object sender, RoutedEventArgs e) { TextBox _dateTexBox = sender as TextBox; if (!_dateTexBox.IsKeyboardFocusWithin) { if (Convert.ToInt32(dateTextBox.Text.Substring(0, 2)) > 31) { MessageBox.Show("Invalid day."); dateTextBox.Focus(); } if (Convert.ToInt32(dateTextBox.Text.Substring(3, 2)) > 12) { MessageBox.Show("Invalid month."); dateTextBox.Focus(); } if (Convert.ToInt32(dateTextBox.Text.Substring(6, 4)) > 2100) { MessageBox.Show("Invalid year."); dateTextBox.Focus(); } } } 检查,但事件仍然多次发生。如何确保事件仅触发一次?

1 个答案:

答案 0 :(得分:2)

WPF DatePicker LostFocus fires seven times

中所述
  

LostFocus是路由策略设置为Bubble的路由事件。通过   泡沫意味着它会向它的父级冒泡直到根窗口,直到   通过明确设置e.Handled = true;。

处理某处      

所以,这意味着即使孩子控制松散的焦点,它也会冒出来   到你的datePicker,这就是为什么你看到你的方法有多次点击的原因。

希望这会对你有所帮助。