VBasic标签数组,名称自动设置?

时间:2014-11-30 15:23:24

标签: arrays labels basic

映入眼帘,

我尝试将多个标签创建为数组但到目前为止没有任何作用。

e.g。我把这段代码放到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"

当我将其更改为for循环时,它将停止工作:

    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上放置两个标签。

我需要快速创建标签的原因是我需要一个8x8标签的矩阵。至少如果我可以更改默认标签名称,例如我将创建一个标签并将名称更改为vu_label1,复制然后粘贴其他名为vu_label2,vu_label3的标签,遗憾的是,当我复制和粘贴时,Visual Studio会继续将标签名称更改回Label1。

另一件事是你不能将数组元素声明为标签的名称,例如vu_level(1)。

感谢任何输入

1 个答案:

答案 0 :(得分: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