我有一个程序,我想用它来选择他们喜欢的颜色。我知道通常如何更改颜色,但我想一次全部完成。反正有这样做吗?像是combobox.selecteditem =“ Red”的话 everybutton.color = color.red。谢谢您的帮助!我正在使用vb.net
答案 0 :(得分:-1)
假设他们在表格上没问题
Dim buttons = Me.Controls.OfType(Of Button).ToArray()
For each button as Button in buttons
button.ForeColor = Color.red
Next
如果涉及组框或面板或类似内容,则需要您递归遍历控件,检查是否为按钮,然后进行设置...然后为其子控件调用函数
Dim _list As New List(Of Control)
Public Sub GetChilds(container As Control)
For Each child As Control In container.Controls
_list.Add(child)
If (child.HasChildren) Then
GetChilds(child)
End If
Next
End Sub
然后填充您称为GetChilds(Me)的列表
并使用它
For Each cntrl As Control In _list
Dim objAsConvertible As Button = TryCast(cntrl, Button)
If Not objAsConvertible Is Nothing Then
objAsConvertible.ForeColor = Color.Red
End If
Next
答案 1 :(得分:-1)
使用循环对您来说是一个问题,例如:
For Each ctrl As Control In pnl.Controls
If TypeOf ctrl Is Button Then
ctrl .Color = Color.Red
End If
Next
pnl是面板的名称,还是其他某种形式的控制控件?
答案 2 :(得分:-1)
如果这是Windows窗体项目(您应始终指定项目类型),则一个想法是将所有按钮数据绑定到单个按钮。为此,我们需要一个按钮(也许是Button1)通过
来控制另一个按钮的前景色.DataBindings.Add("ForeColor", Button1, "ForeColor")
保持简单,以下代码将绑定到表单上的所有Button控件以及子容器中的Button控件,例如面板,按钮等
此代码将放置在“表单加载”或“表单显示”事件中。
Dim ctrl As Control = Me.GetNextControl(Me, True)
Do Until ctrl Is Nothing
If TypeOf ctrl Is Button AndAlso ctrl.Name <> "Button1" Then
CType(ctrl, Button).DataBindings.Add("ForeColor", Button1, "ForeColor")
End If
ctrl = Me.GetNextControl(ctrl, True)
Loop
然后,在Button1 click事件中(保持其简单性)与ColorDialog相切
If ColorDialog1.ShowDialog() = DialogResult.OK Then
Button1.ForeColor = ColorDialog1.Color
End If
如果需要清除上面设置的绑定,这意味着所有绑定都将清除,因此请考虑后果。
Controls.OfType(Of Button).ToList().
ForEach(Sub(b)
b.DataBindings.Clear()
End Sub)
最后,回到第二个代码块,可以将其放置在代码模块中,甚至可以将其设置为语言扩展方法。
Public Function GetAll(pControl As Control, pType As Type) As IEnumerable(Of Control)
Dim ctrls As IEnumerable(Of Control) = pControl.Controls.Cast(Of Control)()
Return ctrls.
SelectMany(Function(ctrl) GetAll(ctrl, pType)).
Concat(ctrls).
Where(Function(c) c.GetType() Is pType)
End Function
用法
GetAll(Me, GetType(Button)).
Where(Function(b) b.Name <> "Button1").
ToList().ForEach(Sub(button) button.DataBindings.
Add("ForeColor", Button1, "ForeColor"))