Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятно о Visual Basic.NET. Самоучитель.Ч2.2005...docx
Скачиваний:
46
Добавлен:
25.11.2019
Размер:
4.02 Mб
Скачать
    1. Работа с клавиатурой

Познакомимся с событиями, связанными с клавиатурой. Их три: KeyDown (клавиша нажата), KeyUp (клавиша отпущена) и KeyPress.(ввели с клавиатуры символ).

      1. Событие 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 превратилось в окно текстового редактора.

Нажатие функциональных (F1F12) и многих управляющих клавиш не вызывает события 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("Набрана цифра")