gpt4 book ai didi

c# - 更改c#中表单内所有控件的颜色

转载 作者:太空狗 更新时间:2023-10-30 00:31:47 25 4
gpt4 key购买 nike

在一键点击事件中,我想改变表单颜色和表单内的所有控件颜色(文本框、标签、 GridView 、组合框),所以我给出了这样的代码:

  foreach (Control c in MyForm.Controls) {
c.BackColor = Colors.Black;
c.ForeColor = Colors.White;
}

但这只是改变了标签和分组框的颜色。
无法更改表单和 GridView 列标题。
组框标题颜色。
我如何更改表单内所有控件的颜色
任何帮助都是非常可观的...

最佳答案

你必须使用递归函数

www.dotnetperls.com/recursion

类似的东西:

foreach (Control c in MyForm.Controls) 
{
UpdateColorControls(c);
}


public void UpdateColorControls(Control myControl)
{
myControl.BackColor = Colors.Black;
myControl.ForeColor = Colors.White;
foreach (Control subC in myControl.Controls)
{
UpdateColorControls(subC);
}
}

请注意,并非所有控件都具有属性 ForeColorBackColor

更新

例如,如果您不想只更改文本框:

public void UpdateColorControls(Control myControl)
{
if (myControl is TextBox)
{
myControl.BackColor = Colors.Black;
myControl.ForeColor = Colors.White;
}
if (myControl is DataGridView)
{
DataGridView MyDgv = (DataGridView)myControl;
MyDgv.ColumnHeadersDefaultCellStyle.BackColor = Colors.Black;
MyDgv.ColumnHeadersDefaultCellStyle.ForeColor = Colors.White;
}

// Any other non-standard controls should be implemented here aswell...

foreach (Control subC in myControl.Controls)
{
UpdateColorControls(subC);
}
}

关于c# - 更改c#中表单内所有控件的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com