假设我有3个名为LBL_1,LBL_2和LBL_3的标签。
然后我有一个函数,可以随机选择1,2和3.
如何将该值与标签名称相结合?
喜欢这个
Dim NR As Integer = MyOneToThreeRandomizer()
'Now NR is 1,2 or 3
LBL_ & NR.ToString(or something) & .Text = "Hello world!"
我当然可以做这样的事情;
Dim NR As Integer = MyOneToThreeRandomizer()
If NR = 1 Then
LBL_1.Text = "Hello World!"
Else If NR = 2 Then
LBL_2.Text.....
....And so on
但在这种情况下,最多可能有80个数字,所以这感觉很糟糕。
答案 0 :(得分:3)
将标签放入数组中,然后通过索引访问它们。
Dim myLabelArray As String() = {"label1", "label2", "label3"}
Dim sb As New StringBuilder()
'Some flavour of loop
Dim NR As Integer = MyOneToThreeRandomizer()
sb.Append(myLabelArray(NR-1))
'End loop
如果您有System.Windows.Forms.Label
s ,则可以在循环中以编程方式将它们添加到阶段,同时将它们放入{{1 }}
答案 1 :(得分:2)
您可以将标签添加到面板并通过儿童访问它们。然后你可以通过索引访问它们。
答案 2 :(得分:2)
Dim NR As Integer = MyOneToThreeRandomizer()
Dim lbls() As Label = DirectCast(Me.Controls.Find("LBL_" & NR, True), Label())
If lbls.Length > 0 Then
lbls(0).Text = "Hello world!"
End If
答案 3 :(得分:0)
For Each ctr As Control In Container.Controls
If ctr.Name = "LBL_" & NR.ToString Then
CType(ctr, Label).Text = "Hello World"
End If
Next