ПОНЯТНО О Visual Basic NET (том 3)

       

Создать кнопку следующего вида, поведения


Задача: Создать кнопку следующего вида, поведения и содержания:
В левой части кнопки находится иконка с луной.
В правой части кнопки имеется изменяющийся текст, указывающий, сколько раз по кнопке щелкнули с момента ее создания, например, «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-го щелчка возникает сообщение «Зрелость наступила».

Содержание раздела