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


Второй способ обработки событий: Оператор AddHandler - часть 2


Один обработчик для нескольких событий. И при 2 способе одним обработчиком можно обрабатывать разные события и у разных объектов:

Dim b1, b2 As New Button

Dim t As New TextBox

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.Controls.Add(b1)

        Me.Controls.Add(b2)

        Me.Controls.Add(t)

        AddHandler b1.Click, AddressOf Обработчик_события_с_элементом_упр

        AddHandler b2.MouseEnter, AddressOf Обработчик_события_с_элементом_упр

        AddHandler t.Click, AddressOf Обработчик_события_с_элементом_упр

End Sub

Private Sub Обработчик_события_с_элементом_упр(ByVal С_кем_произошло_событие As Object,  _

ByVal Информация As EventArgs)

        С_кем_произошло_событие.Left = С_кем_произошло_событие.Left + 30

End Sub

Здесь путешествовать по форме будут две кнопки и одно текстовое поле, причем первая кнопка и текстовое поле при щелчке, а вторая кнопка – при наведении мыши.

 Слуга ста господ. Приятно, что при 2 способе можно обрабатывать события массива объектов, чего не позволяет 1 способ. Вспомним задачу о 40 графических полях с рожицами (15.8). Давайте сделаем так, чтобы щелчок по любому графическому полю заставлял его прыгнуть вверх на 10 пикселей. Вот программа:

Dim Рожица(40) As PictureBox

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim i As Integer

        For i = 1 To 40

            Рожица(i) = New PictureBox             'Создаем очередной объект

            Рожица(i).SizeMode = PictureBoxSizeMode.AutoSize

            Рожица(i).Image = Image.FromFile("FACE02.ICO")

            Рожица(i).Top = Me.Height - 50

            Рожица(i).Left = 20 * i

            Me.Controls.Add(Рожица(i))     'Добавляем новую рожицу в коллекцию формы

            AddHandler  Рожица(i).Click,  AddressOf Обработчик

        Next

End Sub

 

Private Sub Обработчик(ByVal На_кого_нажали As Object, ByVal e As EventArgs)

        На_кого_нажали.Top = На_кого_нажали.Top - 10

End Sub




Начало  Назад  Вперед



Книжный магазин