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

       

Создаем кнопку


Запланируем поместить нашу будущую кнопку в уже созданную библиотеку Моя_библиотека_элементов_управления.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

В то место, что я пометил рожицей, можете дописывать нужные вам операторы конструктора.


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