我试图在我的C#应用程序中引入颜色主题,就像在visual studio中一样
表单上有多个面板,每个面板中都有多个控件,如(groupbox,label,textboxes,panels)。现在考虑以下代码:
if(ctrl is Panel){ (ctrl as Panel).BackColor = Color.FromArgb(214, 219, 233); }
问题是
[t,s]=ode45(ODE1,[0,2],[0,0,0,0]);
更改表单上主面板的 backcolor ,但它也不会更改该面板和其他控件中面板的颜色。
答案 0 :(得分:0)
Statement expected, found Py:PRINT_KEYWORD
仅返回控制的直接子节点(在这种情况下为this.Controls
),因此不会返回这些子节点的子节点。要遍历Form
上的所有控件,您可以使用这样的递归:
Form
或者你可以创建private void button1_Click(object sender, EventArgs e)
{
SetBackColorRecursively(this);
}
private void SetBackColorRecursively(Control ctrl)
{
if (ctrl is Panel)
{
(ctrl as Panel).BackColor = Color.FromArgb(214, 219, 233);
}
if (ctrl is GroupBox)
{
(ctrl as GroupBox).BackColor = Color.FromArgb(214, 219, 233);
}
// Recursively set BackColor on all children
foreach (Control c in ctrl.Controls)
{
SetBackColorRecursively(c);
}
}
方法,它将枚举所有控件,包括祖母:
Flatten