- •Лабораторна робота №7. Тема: Робота з мишкою і клавіатурою
- •Теоретичні відомості
- •Фокус елементів управління
- •Події отримання і втрати фокусу
- •Надаємо фокус у коді.
- •Якщо зламалася мишка
- •Подробиці подій миші. Клас MouseEventArgs
- •Приклади використання деяких подій миші
- •Події KeyDown і KeyUp. Клас KeyEventArgs
- •Приклади використання деяких подій клавіатури
- •Варіанти індивідуальних завдань
Подробиці подій миші. Клас MouseEventArgs
Ми з вами незліченну кількість разів писали процедуру
Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
і жодного разу не заглядали всередину дужок. А бачимо ми там два параметри процедури: один з ім'ям sender, інший - e. Перший має тип Object і позначає об'єкт, з яким трапилася подія, в нашому випадку - Button1. Другий має тип EventArgs. Це загальний тип для другого параметру і на ньому ми зупинятися не будемо. Розглянемо краще заголовки процедур для подій MouseDown, MouseUp і MouseMove. Наприклад:
Private Sub Form1_MouseDown (ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
Події ці схожі і параметри у всіх трьох однакові. Ми вже зараз можемо мати користь з параметра e, що є об'єктом класу MouseEventArgs. Користь від нього та, що він містить інформацію про подію, наприклад, яка кнопка миші була натиснута і які у миші в цей момент були координати. Інформація ця знаходиться в декількох властивостях об'єкта MouseEventArgs. Наведемо ті, що нас цікавлять:
Властивості |
Суть |
Тип значення |
X, Y |
Координати вістря курсору миші в момент події |
Integer |
Button |
Яка саме з кнопок миші була натиснута |
Перерахування MouseButtons зі значеннями: Left (ліва), Right (права), Middle (середня), None (ніяка) і пара значень для пятикнопочной миші. |
Clicks |
Дорівнює 0 (якщо не було клацання), 1 (якщо був одинарний клацання) або 2 (якщо було подвійне клацання). |
Integer |
Крім цього клас MouseEventArgs підтримує роботу з колісчатком миші.
Для того, щоб зрозуміти і перевірити суть цих властивостей, прочитайте (щоб зрозуміти) і запустіть (щоб перевірити) таку програму:
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
Debug.WriteLine(e.X & " " & e.Y) ‘Друкуємо координати події
Debug.WriteLine(e.Button.ToString) ‘Друкуємо англійську назву кнопки
If e.Button = MouseButtons.Left Then Debug.WriteLine("Натиснуто ліву кнопку миші")
If e.Button = MouseButtons.Right Then Debug.WriteLine("Натиснуто праву кнопку миші")
If e.Button = MouseButtons.Middle Then Debug.WriteLine("Натиснуто середню кнопку миші ")
End Sub
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseUp
Debug.WriteLine(e.X & " " & e.Y) 'Друкуємо координати події
Debug.WriteLine(e.Button.ToString) ‘Друкуємо англійську назву кнопки
If e.Button = MouseButtons.Left Then Debug.WriteLine("Відпущено ліву кнопку миші")
If e.Button = MouseButtons.Right Then Debug.WriteLine("Відпущено праву кнопку миші")
If e.Button = MouseButtons.Middle Then Debug.WriteLine("Відпущено середню кнопку миші")
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
Debug.WriteLine(e.X & " " & e.Y) 'Друкуємо координати події
Debug.WriteLine(e.Button.ToString) ‘Друкуємо англійську назву кнопки If e.Button = MouseButtons.Left Then Debug.WriteLine("Утримується натиснутою ліва кнопка миші")
If e.Button = MouseButtons.Right Then Debug.WriteLine("Утримується натиснутою права кнопка миші")
If e.Button = MouseButtons.Middle Then Debug.WriteLine("Утримується натиснутою середня кнопка миші ")
If e.Button = MouseButtons.None Then Debug.WriteLine("Жодна кнопка не натиснута")
End Sub
Поклацайте в різних місцях форми всіма трьома кнопками миші. Рухайте мишею над формою, утримуючи ту чи іншу кнопку. У вікні Output ви будете спостерігати послідовність повідомлень приблизно такого вигляду:
264 24
None
Жодна кнопка не натиснута
264 24
Left
Натиснуто ліву кнопку миші
337 83
Left
Утримується натиснутою ліва кнопка миші
337 83
Left
Відпущено леву кнопку миші
341 83
None
Жодна кнопка не натиснута