У меня есть MaskedTextBox
, который я хочу проверить, когда программа теряет фокус на нем. Мой метод работает так, как я хочу отказаться от одной проблемы, событие запускается снова и снова, а не только один раз (когда пользователь вводит недопустимую дату).Устранение метода LostFocus Несколько раз
Это метод, который я использую;
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();
}
}
}
Я вошел в IsKeyboardFocusWithin
проверки, однако это событие еще выстреливает несколько раз. Как я могу гарантировать, что событие срабатывает только один раз?
Привет Мик спасибо за ваше время. Если я правильно прочитал, то добавление 'e.Handled = true' в событие' LostFocus' не остановит событие от пузырьков, и я уже попробовал метод, предложенный в этом ответе ('IsKeyboardFocusWithin'). Не могли бы вы объяснить немного больше? – CBreeze