Используйте событие Validating в C#

Когда фокус перемещается от одного элемента управления к другому, первый может запустить событие Validating. Это происходит только в том случае, если свойство CausesValidation второго элемента управления true.

Программа может установить параметр Validating обработчика события e.Cancel в true, чтобы предотвратить фокус от выхода из первого элемента управления. В этом случае вы также должны как-то сообщить пользователю, что есть проблема с полем. Например, вы можете отобразить сообщение об ошибке, изменить цвет фона поля или, по крайней мере, дать звуковой сигнал, чтобы пользователь знал, что фокус не покидал поле, потому что что-то не так.

В этом примере используется несколько вспомогательных методов. Метод CamelCaseToWords, показанный в следующем коде, преобразует строку в формате для верблюда likeThisOne в серию разделенных пробелами слов, удаляя первую часть, чтобы дать «This One».

Метод RequiredFieldIsBlank, показанный в следующем коде, определяет, является ли обязательное поле пустым. Если он пуст, метод задает ошибку в поле с помощью ErrorProvider. В противном случае он очищает сообщение об ошибке объекта ErrorProvider.

Все текстовые поля программы, кроме текстового поля почтового индекса, имеют следующий обработчик событий Validating.

Этот код вызывает метод RequiredFieldIsBlank, чтобы установить или очистить сообщение об ошибке TextBox. Он устанавливает e.Cancel результат, возвращенный этим методом, поэтому фокус не может оставить TextBox, если есть ошибка.

Наконец, в текстовом поле почтового индекса используется следующий Validating обработчик событий. Это немного сложнее, потому что он проверяет формат поля.

Этот код вызывает метод RequiredFieldIsBlank, чтобы убедиться, что пользователь ввел значение. Затем он использует регулярное выражение, чтобы убедиться, что введенный текст имеет формат ##### или ##### - ####. (Вы можете изменить это, чтобы оно соответствовало вашей системе почтовых индексов, если вы не находитесь в U.S.)

Итак, вот последовательность событий. Когда пользователь пытается выйти из TextBox, срабатывает его Validating evnet. Обработчик событий проверяет, содержит ли текст TextBox допустимый текст, а если нет, то устанавливает e.Cancel = true, чтобы предотвратить удаление фокуса из TextBox .

Обратите внимание, что событие Validating происходит независимо от того, как пользователь пытается покинуть TextBox. Например, если пользователь нажимает клавишу Tab, нажимает на другой элемент управления, нажимает Enter, чтобы вызвать кнопку «Принять», или нажимает Esc, чтобы вызвать кнопку «Отмена». Событие запускается, даже если пользователь пытается закрыть форму. Это означает, что пользователь не может закрыть форму, если поле не проходит проверку.

Источник: http://csharphelper.com/blog/2016/02/use-the-validating-event-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *