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

Приклади використання деяких подій миші

Приклад 1. При побудові графічних зображень досить часто потрібно визначити координати точок на формі, для цього можна використати подію MouseMove для форми, що буде визначати координати курсору на формі і відображати їх на мітці (мітка рухається разом із курсором):

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

Label1.Left = e.X

Label1.Top = e.Y

Label1.Text = Str(e.X) & Str(e.Y)

End Sub

Приклад 2. Наступна програма виводить на формі лінію, яка точно повторює траєкторію руху покажчика миші. Створюючи код, приведений нижче, ми оголошуємо змінні видимі в модулі, потім, використовуючи подію MouseDown визначаємо початкові координати покажчика миші, і, нарешті за допомогою події MouseMove задаємо координати наступних точок лінії і малюємо її методом DrawLine:

Dim i As Boolean

Dim xl As Integer

Dim yl As Integer

Dim x2 As Integer

Dim y2 As Integer

Private Sub Forml_MouseDown(ByVal sender As Object, ByVal e _

As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown

If e.Button = MouseButtons.Left Then

xl = e.X

yl = e.Y

i = True

End If

End Sub

Private Sub Forml_MouseMove(ByVal sender As Object, ByVal e _

As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove

Dim graf As Graphics = MyClass.CreateGraphics

If i = True Then

x2 = e.X

y2 = e.Y

graf.DrawLine(New Pen(Color.Brown, 3), xl, yl, x2, y2)

xl = x2

yl = y2

End If

End Sub

Private Sub Forml_MouseUp(ByVal sender As Object, ByVal e _

As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp

i = False

End Sub

Недолік цього способу полягає в тому, що лінія у точності повторює траєкторію руху миші. А намалювати мишею щось вагоме не просто. У цьому легко переконатися, поглянувши на малюнок.

Приклад 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

Робота з клавіатурою

Познайомимося з подіями, пов'язаними з клавіатурою. Їх три: KeyDown (клавіша натиснута), KeyUp (клавіша відпущена) і KeyPress (ввели з клавіатури символ).

Подія 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 перетворилося у вікно текстового редактора.

Натискання функціональних (F1 - F12) і багатьох керуючих клавіш не викликає події 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("Набрано цифру")

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