ПОНЯТНО О Visual Basic NET (том 2)

Событие KeyPress. Класс KeyPressEventArgs. Структура Char


Создайте проект из одной формы, без единого элемента управления. Зайдите в окно кода и выберите для формы событие KeyPress. В появившуюся заготовку процедуры запишите следующий код:

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles MyBase.KeyPress

        Debug.Write(e.KeyChar)

End Sub

Запустите проект, пощелкайте по клавишам клавиатуры и понаблюдайте за результатами в окне Output. Каждый раз, как вы нажимаете на алфавитно-цифровую клавишу (то есть набираете на клавиатуре букву, цифру, знак препинания или другой символ), набранный символ появляется в окне Output. Попробуйте ввести заглавные буквы, русские буквы. Все получается:

qwertyQWERTY12345,.!фывапроФЫВАПРО()"№;%:?*

Более того, нажатие клавиш пробела, ввода и табуляции вызывает привычный эффект. Впечатление такое, что окно Output превратилось в окно текстового редактора.

Нажатие функциональных (F1 – F12) и многих управляющих клавиш не вызывает события KeyPress. (Управляющие клавиши – это те, что сосредоточены в основном в левом конце клавиатуры и в правой ее части левее дополнительной цифровой клавиатуры.)

Из программы видно, что символы, выводимые в окно Output, являются значениями свойства KeyChar объекта e, принадлежащего классу KeyPressEventArgs. Строго говоря, значение свойства KeyChar есть структура Char, обладающая рядом полезных методов, действие некоторых из которых видно из следующей программы:

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _

Handles MyBase.KeyPress

        Dim Символ As Char = e.KeyChar

        Debug.WriteLine("Набран символ                                         " & Символ)



        Debug.WriteLine("Это цифра?                                              " & Char.IsDigit(Символ))

        Debug.WriteLine("Это буква?                                                " & Char.IsLetter(Символ))

        Debug.WriteLine("Правда ли, что это буква или цифра?   " & Char.IsLetterOrDigit(Символ))


        Debug.WriteLine("Это строчная буква?                                " & Char.IsLower(Символ))
        Debug.WriteLine("Это заглавная буква?                              " & Char.IsUpper(Символ))
        Debug.WriteLine("Это знак препинания?                             " & Char.IsPunctuation(Символ))
        Debug.WriteLine("Это пробел?                                             " & Char.IsSeparator(Символ))
        Debug.WriteLine("Превратить в строчную                           " & Char.ToLower(Символ))
        Debug.WriteLine("Превратить в заглавную                         " & Char.ToUpper(Символ))
End Sub
Вот как отреагирует эта программа на ввод заглавной русской буквы «Ж»:
Набран символ                         Ж
Это цифра?                            False
Это буква?                            True
Правда ли, что это буква или цифра?   True
Это строчная буква?                   False
Это заглавная буква?                  True
Это знак препинания?                  False
Это пробел?                           False
Превратить в строчную                 ж
Превратить в заглавную                Ж
Анализировать вводимые с клавиатуры символы для управления компьютером можно, например, такими операторами:
        If Символ = ":" Then Debug.WriteLine("Набрано двоеточие")
        If Char.IsDigit(Символ) Then Debug.WriteLine("Набрана цифра")

Содержание раздела