Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_7.docx
Скачиваний:
3
Добавлен:
10.07.2019
Размер:
106.53 Кб
Скачать

Подробиці подій миші. Клас 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

Жодна кнопка не натиснута

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]