我希望能够显示并填充一定数量的标签。效率低下的方法是根据所需的标签数量选择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中创建一个发票生成器,我希望这是一个简单的方法 - 计算订单中的项目数量,用这些物品的名称,揭示了许多标签。
答案 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