⇒ Библиотека книг по компьютерным технологиям
⇒ ⇒ Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET. Учебный курс MCAD/MCSD
⇒ ⇒ ⇒ Глава 2. Создание пользовательского интерфейса
⇒ ⇒ ⇒ ⇒ Занятие 5. Проверка данных, вводимых пользователем
⇒ ⇒ ⇒ ⇒ ⇒ Проверка на уровне поля
Читать далее: Проверка вводимых символов
Обработка событий, связанных с клавиатурой, на уровне поля позволяет немедленно проверять любые данные, вводимые пользователем. Элементы управления, способные принимать ввод с клавиатуры, генерируют следующие три события:
KeyDown
KeyPress
KeyUp
Нажатие и освобождение любой клавиши сопровождается генерацией события KeyDown
и KeyUp
соответственно. Источником событий является элемент управления, обладающий фокусом ввода. Элемент управления, генерировавший событие, передает сведения о нажатой (или отпущенной) клавише (или сочетании клавиш) через экземпляр класса KeyEventArgs
— класса, описывающего сочетание клавиш. В сигнатуре метода, обрабатывающего событие KeyDown
или KeyUp
, должен быть параметр типа KeyEventsArgs
.
Чаще всего события KeyDown
и KeyUp
используют, чтобы определить, нажаты ли клавиши Alt
, Ctrl
или Shift
. Результат передается обработчику соответствующего события через ссылку на экземпляр класса KeyEventArgs
. Его свойства Alt
, Ctrl
и Shift
возвращают значения типа Boolean
, указывающие, были ли нажаты соответствующие клавиши. Значение true
свидетельствует о том, что клавиша была нажата, а false
— о том, что нет. Ниже показан пример обработчика события KeyUp
, проверяющего нажатие клавиши Alt
:
Visual Basic .NET
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp If e.Alt = True Then MessageBox.Show("The Alt key still is down") End If End Sub
Visual C#
private void textBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e) { if(e.Alt == true) { MessageBox.Show("The Alt key still is down"); } }
Свойство KeyEventArgs.KeyCode
позволяет определить, какая именно клавиша спровоцировала событие. Это свойство возвращает код нажатой или отпущенной клавиши (соответственно при событиях KeyDown
или KeyUp
). Ниже показан пример простого обработчика события, отображающего сообщение с кодом нажатой клавиши:
Visual Basic .NET
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown MessageBox.Show(e.KeyCode.ToString()) End Sub
Visual C#
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { MessageBox.Show(e.KeyCode.ToString()); }
Когда пользователь наживает клавишу, которой соответствует значение ASCII, генерируется событие KeyPress
. К этим клавишам относятся все алфавитно-цифровые клавиши (a
—z
, A
—Z
, 0
—9
), а также ряд специальных клавиш, таких, как Enter
и Backspace
. Если при нажатии клавиши или их комбинации не генерируется ASCII-символ, событие KeyPress
также не генерируется. К таким клавишам относятся клавиши-модификаторы Ctrl
и Alt
, а также все функциональные клавиши.
Это событие очень удобно для перехвата нажатия клавиш и проверки соответствующих символов. При генерации события KeyPress
обработчик получает экземпляр класса KeyEventArgs
, свойство KeyEventArgs.KeyCode
которого содержит ASCII-символ клавиши, нажатие которой спровоцировало это событие. Чтобы проверить, например, была ли нажата цифра, достаточно проверить свойство KeyChar
в обработчике события KeyPress
.
Все книги представлены на сайте исключительно для ознакомления с содержанием. |