Visual Basic设置数组中的标签

时间:2013-01-19 21:15:21

标签: vb.net visual-studio

我正在Studio '10中用Visual Basic编写一个小程序。我有一系列的八个数组,我需要在for循环中设置文本。我需要根据标签号设置文本(例如标签1获取word1,标签2获取word2)有没有办法创建一个数组,然后在这个数组中设置我现有的标签,这样我就可以说一些如< / p>

for i = 1 to 8
    subsets(i).Text = words(w + i)
next   
  • '我'是for循环的变量
  • 子集是数组名称。
  • 'words'是一个包含字符串的数组 我对此有点新意,谢谢!

3 个答案:

答案 0 :(得分:2)

您可以创建Label的数组(或列表)并将每个标签控件添加到其中。

这将允许您按照描述循环和分配值。

Dim subsets As New List(Of Label)
subsets.Add(label1)
subsets.Add(label2)
...

答案 1 :(得分:1)

由于您希望将单词基于标签的名称,因此您应该按照Oded建议制作数组或列表。然后,您可以使用String.Remove方法从标签名称中删除单词Label,将其强制转换为int并减去1,因为.Net中的数组基于0。

像这样。

Public Class Form1

    Dim subsets(7) As Label
    Dim words() As String = New String() {"this", "is", "a", "test", "of", "text", "replacement", "."}
    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        subsets(0) = Label1
        subsets(1) = Label2
        subsets(2) = Label3
        subsets(3) = Label4
        subsets(4) = Label5
        subsets(5) = Label6
        subsets(6) = Label7
        subsets(7) = Label8

    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        For Each lbl As Label In subsets
            lbl.Text = words(CInt(lbl.Name.Remove(0, 5)) - 1)
        Next
    End Sub
End Class

答案 2 :(得分:1)

我认为这是你想要做的,虽然我可能错了

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim words() As String = {"one", "two", "three", "four", "five", "six", "seven", "eight"}
    Dim subsets() As Control = {Label1, Label2, Label3, Label4, Label5, Label6, Label7, Label8}

    For i = 0 To 7
        subsets(i).Text = words(i)
    Next

End Sub
End Class

这会将单词数组分配给标签文本属性