1

我希望能够显示并填充一定数量的标签。低效的方法是在所需标签的数量上选择 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 中创建一个发票生成器,我希望这是一种简单的方法 - 计算订单中的项目数量,用名称填充标签物品,露出那么多标签。

4

2 回答 2

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
于 2012-04-09T19:59:48.750 回答
1

您可以通过 formsControls属性按名称获取控件

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
于 2012-04-09T19:57:25.140 回答