我正在制作一个有几百个标签的表单,当点击一个清除按钮时,我需要将特定标签的文本重置为0,同时单独留下其他标签的文本。我不想使用组合框,因为它对我当前的布局看起来不太好。
我试图使用代码:
For Each cnt In Me.Controls
If TypeOf cnt Is Label Then
CType(cnt, Label).Text = ""
End If
哪个适用于清除每个Label,但我也想指定一个特定的Tag。我试过了
For Each cnt In Me.Controls
If TypeOf cnt Is Label And CType(cnt, Label).Tag = "ResetTo0" Then
CType(cnt, Label).Text = ""
End If
当我尝试使用此代码时,出现强制转换异常错误。 有没有人知道我如何添加我的标签而不会出现施法错误,或者更好的方法来做到这一点?
答案 0 :(得分:1)
只需使用扩展名OfType即可获取标签,并且已经是正确的类型
For Each cnt In Me.Controls.OfType(Of Label)
If cnt.Tag = "ResetTo0" Then
cnt.Text = ""
End If
Next
如果不是所有标签都设置了Tag属性,那么还要添加一个Nothing
的检查if cnt.Tag IsNot Nothing AndAlso cnt.Tag = "ResetTo0" Then
.....
End if
你甚至可以尝试使用单行(虽然我怀疑这种方法不是最好的清晰度和性能)
Me.Controls.OfType(Of Label).
Where(Function(x) x.Tag = "ResetTo0").
ToList().
ForEach(Function(k) k.Text = "")