Создаем кнопку
Запланируем поместить нашу будущую кнопку в уже созданную библиотеку Моя_библиотека_элементов_управления.dll. Для этого нам не придется создавать новый проект Windows Control Library, а нужно будет просто открыть старый – Моя_библиотека_элементов_управления. Проделаем это. В проекте уже имеется класс Запретная_зона, добавим новый. Для этого – Project ® Add New Item ® в возникшем окне Add New Item (Рис. 25.5) выбираем User Control ® даем ему имя Моя_кнопка ® Open. Вы видите, что в окне Solution Explorer рядом со значком Запретная_зона.vb появился значок Моя_кнопка.vb.
Рис. 25.5
В окне кода нового класса мы видим строку
Inherits System.Windows.Forms.UserControl
Наша кнопка наследует класс UserControl, вид и поведение у которого явно не кнопочные. Исправим такое положение, заменив эту строку на следующую:
Inherits Button
Теперь в нашем распоряжении вся мощь компонентов кнопки. И вид у нашей кнопки будет соответствующий. Вы видите также, что окно конструктора элементов управления пользователя уступило место широко распахнутому окну дизайнера компонентов с пояснительным текстом внутри (Рис. 25.6).
Рис. 25.6
В окне свойств появились свойства, специфичные для кнопки. (Если почему-либо этого не произошло, попробуйте закрыть и снова открыть проект.)
Теперь те свойства кнопки, которые мы вынуждены были в 22.14.1 создавать программным способом в конструкторе New, можно задавать вручную в окне свойств. Сделайте это, придав кнопке картинку (Image) и выровняв картинку налево, а текст – направо. Само свойство Text не трогайте.
Вот что мы видим в окне кода:
Public Class Моя_кнопка
Inherits Button
Windows Form Designer generated code
End Class
Теперь нам нужно ввести в это окно примерно такой же код, что в 22.14.1:
Public Class Моя_кнопка
Inherits Button
Windows Form Designer generated code
Public ReadOnly Property Число_щелчков() As Integer
Get
Return Число_щелчков_по_кнопке
End Get
End Property
Private Число_щелчков_по_кнопке As Integer = 0
Public ReadOnly Property Ветеран() As Boolean
Get
Return Опытная_кнопка
End Get
End Property
Private Опытная_кнопка As Boolean = False
Public Event Наступление_зрелости()
Private Sub Моя_кнопка_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
Мы создали нашей кнопке два свойства, событие, метод.
Конструктор. Если вам хочется написать конструктор New, то имейте в виду, что он уже написан невидимо для вас в Windows Form Designer generated code. Зайдите туда, как написано в 6.1.3. Вот он:
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
J
End Sub
В то место, что я пометил рожицей, можете дописывать нужные вам операторы конструктора.