⇒ Библиотека книг по компьютерным технологиям
⇒ ⇒ Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET. Учебный курс MCAD/MCSD
⇒ ⇒ ⇒ Глава 2. Создание пользовательского интерфейса
⇒ ⇒ ⇒ ⇒ Занятие 5. Проверка данных, вводимых пользователем
Читать далее: Проверка на уровне формы
Объект, обладающий фокусом, способен получать пользовательский ввод, осуществляемый мышью или через клавиатуру. На форме может быть несколько элементов управления, но в каждый момент времени фокус ввода только у одного из них. Элемент управления, обладающий фокусом, всегда находится на активной форме приложения.
У каждого элемента управления есть метод Focus
, который передает фокус ввода вызвавшему его элементу управления. Метод Focus
возвращает булево значение, свидетельствующее об успешной или неудачной передаче фокуса. Деактивированные или невидимые элементы управления не получают фокус ввода. Определить, способен ли данный элемент управления получить фокус ввода, позволяет его свойство CanFocus
: если оно возвращает true
, элемент управления может получить фокус, а если false
— нет.
Visual Basic .NET
' Проверить, может ли TextBox1 получить фокус, ' и, если да, передать ему фокус. If TextBox1.CanFocus = True Then TextBox1.Focus() End If
Visual C#
// Проверить, может ли TextBox1 получить фокус, // и, если да, передать ему фокус. if(textBox1.CanFocus == true) textBox1.Focus();
События, связанные с передачей фокуса, генерируются в следующем порядке:
Enter
GotFocus
Leave
Validating
Validated
LostFocus
События Enter
и Leave
генерируются, когда фокус переходит к элементу управления (но еще не получен им) и покидает его. События GotFocus
и LostFocus
генерируются при получении и потере фокуса элементом управления. В принципе, эти события можно применять для проверки вводимых значений на уровне поля, однако события Validating
и Validated
лучше подходят для этой цели.
Проще всего проверить вводимые данные при помощи события Validating
, генерируемого перед потерей фокуса элементом управления. Это событие генерируется, только если у элемента управления, который получит фокус следующим, свойство CausesValidation
установлено в true
. Поэтому, если значение элемента управления предполагается проверять при помощи события Validating
, для элемента управления, который получит фокус следующим, свойство CausesValidation
следует установить в true
. Кроме того, использование события Validating
требует, чтобы свойство CausesValidation
у проверяемого элемента управления было установлено в true
. У всех элементов управления, созданных во время разработки, свойство CausesValidation
установлено в true
по умолчанию, обычно исключение составляет лишь кнопка Help
.
Событие Validating
позволяет выполнять довольно сложную проверку значений элементов управления. Обработчик этого события способен, например, проверять соответствие введенного значения некоторому весьма специфическому формату или запрещать передачу фокуса другому элементу управления, пока пользователь не введет какое-либо значение.
Событие Validating
включает экземпляр CancelEventArgs
— класса с единственным свойством Cancel
. Если введенное значение не отвечает заданным параметрам, проверив свойство Cancel
в обработчике события Validating
, можно отменить дальнейшую обработку этого события и вернуть фокус исходному элементу управления.
Событие Validated
генерируется после успешной проверки значения элемента управления и позволяет выполнить некоторые действия в зависимости от результатов проверки.
Ниже показан пример обработчика события Validating
, который не разрешает передать фокус следующему элементу управления, пока пользователь не введет значение в поле TextBox1
.
Visual Basic .NET
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating ' Проверить значение TextBox1 If TextBox1.Text = "" Then ' Если поле TextBox1 пусто, вернуть ему фокус e.Cancel = True End If End Sub
Visual C#
private void textBox1_Validating(object sender, System.ComponentModel.CancelEventArgs e) { // Проверить значение textBox1 if(textBox1.Text == "") // Если поле textBox1 пусто, вернуть ему фокус e.Cancel = true; }
Применение события Validating
для проверки текстового поля
Validating
, устанавливающий свойство e.Cancel
в true
, чтобы прервать проверку и вернуть фокус текстовому полю.Validating
, установите свойство CausesValidation
в false
.Все книги представлены на сайте исключительно для ознакомления с содержанием. |