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

13/ Робота з мишкою

Основні події пов’язані з мишкою

Більшість елементів управління має вбудовану підтримку для введення з використанням миші. Тому для цього не потрібне написання окремої програми. Іноді від елементу управління може знадобитися більший набір функцій, ніж він підтримує. У Visual Basic є 8 подій, які дозволяють керувати введенням з миші безпосередньо. Вони перераховані в порядку появи в таблиці:

Назва події

Опис

Click

Відбувається, коли натиснуто елемент управління

DoubleClick

Відбувається при подвійному натисненні елементу управління

MouseEnter

Відбувається, коли покажчик миші попав на елемент управління

MouseMove

Відбувається, коли покажчик миші рухається над елементом управління

МouseHover

Відбувається, коли покажчик миші зупиняється над елементом управління

MouseDown

Відбувається, коли покажчик миші знаходиться над елементом управління і при цьому натиснута кнопка миші (будь-яка)

MouseUp

Відбувається, коли покажчик миші знаходиться над елементом управління і при цьому відпускається кнопка миші(будь-яка)

MouseLeave

Відбувається, коли покажчик миші покидає елемент управління

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

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

Приклад 3. У наступному прикладі при проходженні вказівника миші над кнопкою Button відбувається зміна кольору кнопки і тексту в елементі TextBox.

Private Sub Buttonl_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter

Button1.BackColor = Color.Red

TextBox1.Text = "вказівник миші"

End Sub

Private Sub Buttonl_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave

Button1.BackColor = Color.LightBlue

TextBox1.Text = ""

End Sub