0

假设我有 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 个数字,所以感觉真的很糟糕。

4

4 回答 4

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.Labels,你可以在循环中以编程方式将它们添加到舞台,同时你也可以将它们放在你的labelArray.

于 2013-02-26T13:38:55.157 回答
2

您可以将标签添加到面板并通过子项访问它们。然后你可以通过索引访问它们。

于 2013-02-26T13:41:16.383 回答
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
于 2013-02-26T13:58:58.287 回答
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
于 2013-02-26T13:42:15.010 回答