如何创建一个显示一定数量标签的循环?

时间:2012-04-09 19:42:02

标签: vb.net

我希望能够显示并填充一定数量的标签。效率低下的方法是根据所需的标签数量选择SELECT CASE,然后依次填充这些标签。我正在寻找这样的东西:

For i = 1 to RequiredNumOfLabels
    Label & i.visible = true
    Label & i.text = DataTable.Rows(i).Item(2)
Next

谢谢。

编辑:

    For i = 1 To NumberOfItems
        Dim lbl = Controls("lbl" & i)
        lbl.Visible = True
        lbl.Text = CStr(DataTable.Rows(i).Item(2))
    Next

我认为该行

    Dim lbl = Controls("lbl" & i)

是问题,因为在执行该行之后,lbl仍然等于零。

背后的原因是我试图在vb.net中创建一个发票生成器,我希望这是一个简单的方法 - 计算订单中的项目数量,用这些物品的名称,揭示了许多标签。

2 个答案:

答案 0 :(得分:2)

如果您的标签控件确实是这样的,那么您可以尝试从列表中引用它们:

Dim myLabels As New List(Of Label)
myLabels.Add(Label1)
myLabels.Add(Label2)

然后只需更新它们:

For i as Integer = 1 to myLabels.Count
  myLabels(i - 1).Visible = True
  myLabels(i - 1).Text = DataTable.Rows(i).Item(2).ToString
Next

答案 1 :(得分:1)

您可以通过表单Controls属性

按名称获取控件
For i = 1 To RequiredNumOfLabels
    Dim lbl = TryCast(Controls("Label" & i), Label)
    If lbl IsNot Nothing Then
        lbl.Visible = True
        lbl.Text = CStr(DataTable.Rows(i).Item(2))
    End If
Next

由于您获得了Control类型的对象,因此必须将其强制转换为Label


更新

似乎您只使用Control中定义的属性。因此,您可以将代码简化为

For i = 1 To RequiredNumOfLabels
    Dim lbl = Controls("Label" & i)
    lbl.Visible = True
    lbl.Text = CStr(DataTable.Rows(i).Item(2))
Next