Проверка пользовательского ввода с использованием события TextBox_Validating

1

Я пытаюсь использовать этот настраиваемый метод для проверки ввода пользователя в текстовых полях. Но я вижу, что здесь что-то отсутствует, так как теперь я не могу перемещаться (фокусироваться) на следующее текстовое поле в форме!

private void textBox_Validating(object sender, CancelEventArgs e)
{
    TextBox currenttb = (TextBox)sender;
    if (currenttb.Text == "")
    {
        MessageBox.Show(string.Format("Empty field {0 }", currenttb.Name.Substring(3)));
        e.Cancel = false;
    }

    else
    {
        e.Cancel = true;
    }
}

Добавление обработчика в текстовые поля с циклом foreach в конструкторе формы:

foreach(TextBox tb in this.Controls.OfType<TextBox>().Where(x => x.CausesValidation == true))
{
    tb.Validating += textBox_Validating;
}
  • 0
    Это ожидаемое поведение - Control.Validating Event
  • 0
    Есть ошибка в том, if . Должно быть так> if (currenttb.Text == "") {MessageBox.Show (string.Format ("Пустое поле {0}", currenttb.Name.Substring (3))); e.Cancel = true; }
Показать ещё 1 комментарий
Теги:
validation
winforms

1 ответ

1

Как ответ здесь, его ожидаемое поведение потери фокуса С# Проверка ввода для текстового поля на winforms: -

Описание

Существует много способов проверки вашего TextBox. Вы можете сделать это при каждом нажатии клавиши, в более позднее время или в Верификационном событии.

Проверяющее событие запускается, если ваш TextBox теряет фокус, например, нажмите на другой элемент управления. Если ваш набор e.Cancel = true, TextBox не потеряет фокус.

MSDN - Control.Validating Event Когда вы меняете фокус с помощью клавиатуры (TAB, SHIFT + TAB и т.д.), Вызывая методы Select или SelectNextControl или устанавливая свойство ContainerControl.ActiveControl в текущую форму, события фокуса происходят в следующем порядке

Войти

GotFocus

Оставлять

Пользователи

Утвержденный

LostFocus

Когда вы меняете фокус с помощью мыши или вызывая метод Фокус, события фокуса происходят в следующем порядке:

Войти

GotFocus

LostFocus

Оставлять

Пользователи

Утвержденный

Ещё вопросы

Сообщество Overcoder
Наверх
Меню