Событие KeyPress

События KeyDown и KeyUp

Нажатие и освобождение любой клавиши сопровождается генерацией события KeyDownи KeyUpсоответственно. Источником событий является элемент управления, обладающий фокусом ввода. Элемент управления, генерировавший событие, передает сведения о нажатой (или отпущенной) клавише (или сочетании клавиш) через экземпляр класса KeyEventArgs класса, описывающего сочетание клавиш. В сигнатуре метода, обрабатывающего событие KeyDownили KeyUp, должен быть параметр типа KeyEventArgs.

Чаще всего события KeyDownи KeyUpиспользуют, чтобы определить, нажаты ли клавиши Alt, Ctrl или Shift. Результат передается обработчику соответствующего события через ссылку на экземпляр класса KeyEventArgs. Его свойства Alt, Ctrlи Shift возвращают значения типа Boolean, указывающие, были ли нажаты соответствующие клавиши. Значение Trueсвидетельствует о том, что клавиша была нажата, а false о том, что нет. Ниже показан пример обработчика события KeyDown, проверяющего нажатие клавиши Alt:

private void textBox2_KeyDown(object sender, KeyEventArgs e)

{

if (e.Alt == true)

MessageBox.Show("Нажата кнопка ALT!!!");

}

Свойство KeyEventArgs.KeyCodeпозволяет определить, какая именно клавиша спровоцировала событие. Это свойство возвращает код нажатой или отпущенной клавиши (соответственно при событиях KeyDown или KeyUp). Ниже показан пример простого обработчика события, отображающего сообщение с кодом нажатой клавиши:

private void textBox2_KeyDown(object sender, KeyEventArgs e)

{

MessageBox.Show("Нажата кнопка: " + e.KeyCode.ToString());

}

Когда пользователь нажимает клавишу, которой соответствует значение ASCII, генерируется событие KeyPress. К этим клавишам относятся все алфавитно-цифровые клавиши (a— z, A— Z, 0—9), а также ряд специальных клавиш, таких, как Enter и Backspace. Если при нажатии клавиши или их комбинации не генерируется ASCII-символ, событие KeyPress также не генерируется. К таким клавишам относятся клавиши-модификаторы Ctrl и Alt, а также все функциональные клавиши.

Это событие очень удобно для перехвата нажатия клавиш и проверки соответствующих символов. При генерации события KeyPress обработчик получает экземпляр класса KeyEventArgs, свойство Key EventArgs. Key Code которого содержит ASCII-символ клавиши, нажатие которой спровоцировало это событие. Чтобы проверить, например, была ли нажата буква, достаточно проверить свойство KeyChar в обработчике события KeyPress.

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (Char.IsLetter(e.KeyChar))

MessageBox.Show("Буква!!!");

}

Тип данных Char поддерживает несколько статических [Shared (static)] методов, удобных для проверки символов, переданных событием KeyPress:

• Char.IsDigit();

• Char.IsLetter();

• Char.IsLetterOrDigit();

• Char.IsPunctuation();

• Char.IsLower();

• Char.IsUpper().

Все они проверяют символы и возвращают булевы значения. Что проверяет каждый метод — легко догадаться по его имени.

Char.IsDigit возвращает true, если переданный ей символ является цифрой, и false в любом другом случае;

Char.IsLower возвращает true, если ее аргументом является буква в нижнем регистре, и false в противном случае; сходным образом работают остальные методы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: