Как сделать массивы кнопок в vb .net 2005 - PullRequest
2 голосов
/ 29 октября 2010

Привет :) Я просто хочу спросить о том, как создать массив кнопок в vb .net 2005. Кажется, что в vb6 все по-другому, потому что в vb6 нужно просто добавить индекс для его свойства, но в vb.net нет свойства index.Можно ли это сделать, спроектировав форму таким же образом, как копирование и вставка в форму в vb6?

Ответы [ 2 ]

3 голосов
/ 29 октября 2010

VB.NET по умолчанию не использует управляющие массивы. Это потому, что события обрабатываются не так, как VB6.

Если я правильно помню, вы бы написали код для управляющего массива, такого как массив CommandButton.

Private Sub Buttons_Click(index As Integer)
    Select Case index
        Case 1
            'write some code here'
    End Select
End Sub

Затем компилятор VB6 проанализирует имя каждого сабвуфера в вашем файле и назначит их соответствующему событию элемента управления. Таким образом, вышеприведенная подпрограмма будет прикрепляться к каждой кнопке в вашей форме, называемой «Кнопки», и вы сможете определить кнопку, на которую нажали, проверив параметр index.

В VB.NET события «привязаны» к элементам управления по-разному.
Это делается вручную с помощью оператора AddHandler или автоматически с использованием ключевого слова Handles.

Когда вы назначаете события элементам управления из конструктора форм, в среде IDE используется ключевое слово Handles, чтобы подключить каждый из элементов управления к их обработчикам событий. Таким образом, вы получите что-то вроде этого:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles Button.Click
    'your code goes here'
End Sub

При использовании этого метода вам не нужен массив элементов управления, как в VB6. Вы можете просто подключить больше нажатий кнопок или, в этом отношении, любой щелчок элемента управления, добавив в конец оператора примерно так:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles _
  Button1.Click, Button2.Click, Button3.Click, ListBox.Click
    'your code goes here'
End Sub

Как видно, вы просто добавляете имя элемента управления (например, Button2 ) и затем добавляете его с помощью .Click, чтобы «привязать» событие нажатия элемента управления к подпрограмме.

Возникает вопрос: как узнать, какой элемент управления (кнопка) был нажат?
Ответ довольно прост, проверьте параметр sender.

В .NET обычно элемент управления, вызывающий событие, всегда находится в параметре sender. Итак, основываясь на приведенном выше коде, у нас будет что-то вроде этого:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles _
  Button1.Click, Button2.Click, Button3.Click, ListBox.Click

    If sender Is Button1 Then
        'do something'
    ElseIf sender Is Button2 Then
        'do another thing'
    ElseIf sender Is Button3 Then
        'do yet another thing'
    Else
        'do something different for the ListBox'
    End If
End Sub

Если вы пошли так далеко и поняли это, вы начнете понимать, почему мы больше не используем массивы управления в VB.NET или, в этом отношении, .NET вообще.

Сообщите мне, если у вас есть еще вопросы. Ура!

1 голос
/ 29 октября 2010

В отличие от VB6, .NET позволяет создавать обычные массивы элементов управления, поэтому нет необходимости в коллекциях элементов управления VB6.

Просто используйте массив или List(Of Control), заполните его элементами управления и нажмите «Готово!», Все готово.

Используйте AddHandler, если вы хотите добавить обработчики событий к этим элементам управления.

Конструктор Windows Forms больше не поддерживает массивы элементов управления (в отличие от дизайнера форм VB6), что имеет смысл: если у вас есть элемент управления массив , он по своей сути динамический, поэтому он не может быть осмысленным создано во время разработки. Его размер динамически увеличивается и уменьшается во время выполнения в зависимости от фактического количества необходимых элементов управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...