Создать кнопку следующего вида, поведения
Задача: Создать кнопку следующего вида, поведения и содержания:
В левой части кнопки находится иконка с луной.
В правой части кнопки имеется изменяющийся текст, указывающий, сколько раз по кнопке щелкнули с момента ее создания, например, «19 щелч.».
У кнопки есть дополнительное ReadOnly свойство Число_щелчков, смысл которого очевиден.
На 10-м щелчке по кнопке она порождает событие Наступление_зрелости. Подразумевается, что пока на кнопку не нажали 10 раз, она еще неопытная, незрелая, а когда нажали – она уже опытная, зрелая, ветеран. Таким образом, у кнопки есть дополнительное событие.
У кнопки есть дополнительное ReadOnly булевское свойство Ветеран, которое равно False до 10-го щелчка и True – после.
У кнопки есть дополнительный метод Прыжок, который заставляет кнопку прыгнуть направо. Дальность прыжка является параметром метода.
Решение: Создайте проект с кнопкой Button1, которая нужна только для проверки работы нашей создаваемой кнопки. Вот код:
Форма:
Dim WithEvents Кнопка As New clsКнопка
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Controls.Add(Кнопка)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Кнопка.Прыжок(40)
Debug.WriteLine(Кнопка.Число_щелчков)
Debug.WriteLine(Кнопка.Ветеран)
End Sub
Private Sub Кнопка_Наступление_зрелости() Handles Кнопка.Наступление_зрелости
MsgBox("Зрелость наступила")
End Sub
Класс:
Public Class clsКнопка
Inherits Button
Private Число_щелчков_по_кнопке As Integer = 0
Public ReadOnly Property Число_щелчков() As Integer
Get
Return Число_щелчков_по_кнопке
End Get
End Property
Private Опытная_кнопка As Boolean = False
Public ReadOnly Property Ветеран() As Boolean
Get
Return Опытная_кнопка
End Get
End Property
Public Event Наступление_зрелости()
Public Sub New()
Me.Image = Image.FromFile("MOON06.ICO")
Me.ImageAlign = ContentAlignment.MiddleLeft 'Луна - налево
Me.Text = Число_щелчков_по_кнопке & " щелч."
Me.TextAlign = ContentAlignment.MiddleRight 'Текст - направо
End Sub
Private Sub clsКнопка_Click( ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click
Число_щелчков_по_кнопке = Число_щелчков_по_кнопке + 1
Me.Text = Число_щелчков_по_кнопке & " щелч."
If Число_щелчков_по_кнопке = 10 Then
RaiseEvent Наступление_зрелости()
Опытная_кнопка = True
End If
End Sub
Public Sub Прыжок(ByVal Дальность As Integer)
Me.Left = Me.Left + Дальность
End Sub
End Class
Из кода формы мы обращаемся к новым свойствам, методам нашей кнопки и обрабатываем ее событие Наступление_зрелости. Когда при наборе программного текста в окне кода формы вы вводите точку после слова Кнопка, перед вами возникает список свойств и методов обычной кнопки, к которому добавились свойства Число_щелчков и Ветеран и метод Прыжок. При создании обработчика события Наступление_зрелости вы видите это событие в поле в правом верхнем углу окна кода формы наряду с обычными событиями кнопки.
Запустите проект. Пощелкайте по обеим кнопкам. При щелчке по кнопке Button1 наша кнопка прыгает направо на 40 пикселей. При щелчке по нашей кнопке ее текст меняется. После 10-го щелчка возникает сообщение «Зрелость наступила».