Программирование
Веб программирование

Создание индексированных наборов элементов в Vb.Net

 
 

Привет всем.  В VB6 при помещении элементов на форму можно создавать их индексированные наборы, например Label(i), Button(i)  и т.д.  Это очень облегчает программирование, когда на форме много элементов и их приходится форматировать и заполнять циклически.  В Vb.Net эта возможность, во всяком случае, прямая, отсутствует.  Чтобы в В Vb.Net все же создать такую возможность предлагаю пример. На форме поместите три элемента Label1,label2,label3  и кнопку Button1.  Код будет выглядеть так:

Public Class Form1

    Dim LabArray(3) As Label 'Определение индексированного набора элеметов типа Label
    Dim i As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Заполнение набора
        LabArray(1) = Label1
        LabArray(2) = Label2
        LabArray(3) = Label3
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'Изменение элементов в наборе циклически

        For Me.i = 1 To 3
            LabArray(i).BackColor = Color.Aqua
            LabArray(i).ForeColor = Color.Red
            LabArray(i).Text = Str(i)
        Next

    End Sub

End Class

 Запустите проект на выполнение и нажимайте Button1

Индексированные наборы можно создавать для элементов   TextBox, PictureBox и других аналогично. 


Есть вопросы? Спроси на нашем форуме!!
Coolhacker770 [15.02.2013 21:12]

ИМХО, но массив тут едва ли уместен, уж увольте. Отчего б нам не использовать преимущества платформы .NET и не обратиться к спискам?)

[листинг]
Dim LabelList As New List(Of Label)

LabelList.Add(Label1)
LabelList.Add(Label2)
LabelList.Add(Label3)

For Each L As Label In LabelList
L.BackColor = Color.Aqua
L.ForeColor = Color.Red
L.Text = "text"
Next
[/листинг]

Если нужно обращаться по индексу, то тут как всегда:

[листинг]
LabelList(index)
[/листинг]

Coolhacker770 [15.02.2013 21:13]

Листинг человеческого вида: pastebin.com/xLDv8kG5

pjp07190 [18.02.2013 10:54]

Спасибо, не знал о такой возможности в Vb.Net. Попробую поиграться.

alex13sh300 [07.06.2015 11:34]

кстати, как в vb.Net сделать массив кнопок , и при клики на одну из них, видеть Индес кликнувшей кнопки.
В в vb6 таое есть
sub CommanButton_Click(Index as Integer)
Label1.Caption = Index
End Sub

ruslang0230 [07.06.2015 22:05]

alex13sh, можно воспользоваться AddHandler и в цикле его назначать, к примеру:

Dim manyButtons(5) As Button
Dim i As Integer

Sub Rabota()

For i = 1 To 3

manyButtons(i).BackColor = Color.Aqua
manyButtons(i).ForeColor = Color.Red
manyButtons(i).Text = Str(i)
Addhandler manyButtons(i).Click, Sub() MsgBox("Нажата кнопка " & i &)

Next
End Sub

P.S. Набито просто, без компилятора даже...



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.