- •Лабораторна робота №7. Тема: Робота з мишкою і клавіатурою
- •Теоретичні відомості
- •Фокус елементів управління
- •Події отримання і втрати фокусу
- •Надаємо фокус у коді.
- •Якщо зламалася мишка
- •Подробиці подій миші. Клас MouseEventArgs
- •Приклади використання деяких подій миші
- •Події KeyDown і KeyUp. Клас KeyEventArgs
- •Приклади використання деяких подій клавіатури
- •Варіанти індивідуальних завдань
Лабораторна робота №7. Тема: Робота з мишкою і клавіатурою
Теоретичні відомості
До цих пір в режимі роботи проекту ми користувалися мишкою тільки для того, щоб натискати на кнопки, а клавіатурою - тільки для введення тексту в текстові поля. Однак, можливості миші і клавіатури в VB набагато ширше. VB дозволяє робити мишею і клавіатурою всі ті речі, які ми звикли робити ними в будь-яких графічних та текстових редакторах, іграх та інших додатках Windows. Зокрема, ми можемо з їхньою допомогою управляти поведінкою і рухом об'єктів на формі, малювати мишею лінії, рамочки, змінювати традиційну дію клавіш і так далі.
Перш ніж говорити про мишку і клавіатуру, поговоримо про фокус.
Фокус елементів управління
Що таке фокус? Створимо проект. Помістимо на форму спочатку два текстових поля, а потім дві кнопки. Не навпаки. Запустимо проект. Клацнемо по одній кнопці, по іншій, по одному полю, по іншому. Нічого, звичайно, не відбувається, але зверніть увагу ось на що. Якщо останній раз ви клацнули по кнопці, то вона має дещо інший, ніж у інших кнопок, «натиснутий» вигляд. Це від того, що рамочка навколо неї стала товстішою. А якщо останній раз ви клацнули в текстовому полі, то саме в ньому блимає курсор, а в інших текстових полях не блимає. VB як би показує вам, яким з елементів керування ви користувалися останнім. Можна сказати, що з безлічі різнорідних об'єктів на формі тільки один виділяється, тобто перебуває у фокусі. Кажуть, що в цьому випадку об'єкт має фокус.
На нашій формі 4 об'єкти. У фокусі завжди тільки один з них.
Події отримання і втрати фокусу
У об'єктів, здатних мати фокус, є дві події: Enter, яка виникає в момент отримання об'єктом фокуса, і Leave, яка виникає в момент втрати фокусу. Наведемо приклади процедур для нашого проекту, для цього у вікні коду запишемо такі процедури :
Private Sub Button1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Enter
MsgBox("Кнопка 1 отримала фокус")
End Sub
Private Sub Button2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Enter
MsgBox ("Кнопка 2 отримала фокус")
End Sub
Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter
MsgBox("Текстове поле 1 отримало фокус")
End Sub
Private Sub Button1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Leave
MsgBox ("Кнопка 1 втратила фокус")
End Sub
Private Sub Button2_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Leave
MsgBox ("Кнопка 2 втратила фокус")
End Sub
Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
MsgBox ("Текстове поле 1 втратило фокус")
End Sub
Запустимо проект. Звернемо увагу, що перше текстове поле вже в фокусі, про що у вікні повідомлення ви вже маєте повідомлення від вашої програми: Текстове поле 1 отримало фокус
Клацнемо по другому текстовому полі. У вікні повідомлення з'являється: Текстове поле 1 втратило фокус
Клацнемо по другій кнопці. У вікні повідомлення з'являється: Кнопка 2 отримала фокус
Клацнемо на першому текстовому полі. У першому вікні повідомлення з'являється: Кнопка 2 втратила фокус, а в другому: Текстове поле 1 отримало фокус
Саме в такому порядку, а не навпаки.