2014-11-30 1 views
0

приветствует,VBasic массив меток, имя автонастройки?

Я пытаюсь создать несколько меток в виде массива, но пока ничего не работает.

например. Я взял этот код и поместить его в Form1_Load, он работает и создает одну метку во время выполнения:

Dim vulabel1 As New Label() 
    vulabel1.Size = New Size(100, 20) 
    vulabel1.Location = New Point(25, 25) 
    vulabel1.Name = "textBox1" 
    Me.Controls.Add(vulabel1) 
    vulabel1.Text = "vu label 1" 

Когда я изменить его для цикла она перестает работать:

Dim vulabel() As Label 
    For n As Byte = 0 To 2 
     vulabel(n).Size = New Size(100, 10) 
     vulabel(n).Location = New Point(n * 10, n * 10) 
     vulabel(n).Name = "label " & n.ToString 
     Me.Controls.Add(vulabel(n)) 
    Next 

Я эту мысль следует разместить две метки на Form1 во время выполнения.

Причина, по которой мне нужен быстрый способ создания меток, заключается в том, что мне нужна матрица 8х8-меток. По крайней мере, если бы я мог изменить имя метки по умолчанию, например, Я бы создал ярлык и изменил имя на vu_label1, скопировал, а затем вставил другие метки с именем vu_label2, vu_label3, к сожалению, Visual Studio продолжает менять имя метки на Label1, когда я копирую и вставляю.

Другое дело, что вы не можете объявить элемент массива как имя метки, например. vu_level (1).

спасибо за любой вход

+0

Вы только что забыли instanciation .. –

ответ

0

Вы должны указать максимальный индекс при объявлении массива. На основе цикла For, выглядит как максимальный индекс 2, так это то, как вы объявите массив

Dim vulabel(2) As Label 

Следующим шагом является создание нового экземпляра Label на каждой итерации, как показано ниже

vulabel(n) = New Label() 

Вот полный измененный код

Dim vulabel(2) As Label 
For n As Byte = 0 To 2 
    vulabel(n) = New Label()   
    vulabel(n).Size = New Size(100, 10) 
    vulabel(n).Location = New Point(n * 10, n * 10) 
    vulabel(n).Name = "label" & n.ToString 
    Me.Controls.Add(vulabel(n)) 
Next 
+0

Прохладный, спасибо! У меня есть другой вопрос. Есть ли способ получить доступ к этим созданным ярлыкам по их именам во время выполнения? т. е. не путем вызова порога (n), а скорее метки 0 или метки 1? Если я попытаюсь это сделать, Visual Studio даст мне ошибку, так как эти метки не объявлены. – ambinaut

+0

Попробуйте удалить пробел из свойства 'Name'. Кстати, вы используете vb.net? – ekad

+0

Я использую сообщество Visual Studio 2013. Изменение имени не будет работать, я думаю, потому что метки создаются во время выполнения. Так, например, если бы я была кнопка с этими подразделами: Private Sub Button1_Click (отправитель As Object, е Как EventArgs) Ручками Button1.Click label1.BackColor = Color.GreenYellow End Sub ---- Это не будет работать , p.s. как я могу публиковать ответы с формированием кода? – ambinaut