我有10个名为lbl1
,lbl2
,... lbl10
我想用cicle指数改变它们的适当性(使用cicle)
for i as integer=1 to 10 step 1
lbl (i) = PROPRETY 'I know this is wrong but it's what I would do...
end for
我正在使用解决方法,但我正在寻找更好的方法..
Dim exm(10) As Label
exm(1)=lbl1
exm(2)=lbl2
...
exm(10)=lbl10
for i as integer=1 to 10 step 1
exm (i) = PROPRETY
end for
答案 0 :(得分:2)
您的“解决方法”是一种很好的方法。你需要在某种集合中使用你的控件,以便迭代它们。
也许您可以使用数组初始值设定项来更清晰地初始化数组(代码更少):Object and array initializers in VB .NET
您可以浏览Controls集合,并为您找到的每个Label执行操作,但这可能不是您想要的 - 因为这样可以获得表单上的所有标签。
答案 1 :(得分:1)
如果标签包含在表单或其他容器中,您可以使用与此类似的查询:
Dim myLabels = (From g As Label In Me.Controls Select g _
Where Mid(g.Name, 1, 3) = "lbl" Order By g.Name)
然后遍历集合,申请你的财产。
答案 2 :(得分:1)
以M.A. Hanin的答案为基础,您可以简单地执行以下操作:
(From l in Me.Controls _
Where RegEx.IsMatch(l.Name, "^lbl[0-9]+") AndAlso TypeOf l is Label
Order By l.Name).ForEach(Function(l) SetPropertyForLabel(l))
Sub SetPropertyForLabel(lbl as Label)
' Do some stuff '
lbl.Text = lbl.Name
End Sub
通过这种方式,您可以使用正则表达式来过滤游览标签的名称(提供的标签与您在O.P.上提供的模式匹配)并对自定义方法执行操作。
答案 3 :(得分:1)
你的解决方法实际上是推荐的技术。您可能希望使用List(Of Label)和For ... Each语句。这将消除硬编码和易维护。