有没有办法用一个命令改变10个标签的颜色?
例如,而不是:
Label1.ForeColor = Color.Black
Label2.ForeColor = Color.Black
Label3.ForeColor = Color.Black
Label4.ForeColor = Color.Black
Label5.ForeColor = Color.Black
Label6.ForeColor = Color.Black
Label7.ForeColor = Color.Black
我只想使用一个命令来更改ForeColor
。例如,代替Label1
,它将是LabelX
。
答案 0 :(得分:5)
您可以遍历类型标签的所有控件。 这应该可以解决问题。
'For each control in the form
For Each ctrl As Control In Me.Controls
'If its of type label
If TypeOf ctrl Is Label Then
'Change the color
ctrl.ForeColor = Color.Black
End If
Next
编辑像文森特建议所以我们不需要在之前声明ctr。
正如Bugs在这里建议的是一个更短的选择:
For Each ctr In Me.Controls.OfType(Of Label)
ctr.ForeColor = Color.Black
Next
答案 1 :(得分:3)
这是一个递归解决方案,可以解决放置在Label
或GroupBox
等容器中的Panel
个控件。
我将尝试向您展示解释为什么可能需要递归方法的区别。我正在使用Color.Red
来说明差异。您可以将代码更改为Color.Black
。
以下代码会将ForeColor
属性设置为Color.Red
已放置在表单上的Label
控件上:
For Each lbl As Label In Me.Controls.OfType(Of Label)()
lbl.ForeColor = Color.Red
Next
这就是它的样子:
您可以在此处看到只设置了Label4
。
以下代码将设置所有 Label
控件:
Private Sub SetAllLabelsForeColor(ByVal parent As Control)
For Each c As Control In parent.Controls
If TypeOf (c) Is Label Then
c.ForeColor = Color.Red
Else
If c.HasChildren Then
SetAllLabelsForeColor(c)
End If
End If
Next
End Sub
然后您可以使用以下代码调用它:
SetAllLabelsForeColor(Me)
这是结果的截图:
答案 2 :(得分:1)
For i As Integer = 1 To 7
Dim xL As Label = DirectCast(Controls("Label" & i.ToString), Label)
xL.ForeColor = Color.Black
Next
答案 3 :(得分:1)
您可以创建一个从1到X的循环,并通过将单词Label
与X连接来按名称获取每个标签。
Private Sub SetLabelRangeColor(ByVal [End] As Integer, ByVal Color As Color)
SetLabelRangeColor(1, [End], Color)
End Sub
Private Sub SetLabelRangeColor(ByVal Start As Integer, ByVal [End] As Integer, ByVal Color As Color)
If Start > [End] Then Throw New ArgumentOutOfRangeException
For x = Start To [End]
Dim TargetLabel As Label = TryCast(Me.Controls("Label" & x), Label)
If TargetLabel IsNot Nothing Then
TargetLabel.ForeColor = Color
End If
Next
End Sub
<强>用法:强>
SetLabelRangeColor(<end label no.>, <color>)
'Or:
SetLabelRangeColor(<start label no.>, <end label no.>, <color>)
用法示例:
'Label 1-6:
SetLabelRangeColor(6, Color.Red)
'Label 4-9:
SetLabelRangeColor(4, 9, Color.Red)