我正在制作一般软件,并在其中添加了一些标签(我不能说更多... xD) 所以,我想循环遍历我的表格中的每个控件或至少所有标签......我已经尝试过了
foreach (Control c in this.Controls)
{
//item.Font.Size = 11f;
c.ForeColor = Color.White;
}
但我认为它只会循环到MaterialSkin.Controls.MaterialTabControl
因为当我尝试使用MaterialLabel..etc
运行任何代码时 foreach (MaterialLabel c in this.Controls)
{
//item.Font.Size = 11f;
c.ForeColor = Color.White;
}
它告诉我
Additional information: Unable to cast object of type 'MaterialSkin.Controls.MaterialTabControl' to type 'MaterialSkin.Controls.MaterialLabel'.
我需要帮助请帮助我:) 我不是一个很好的程序员...所以请帮助
现在要玩Left 4 Dead xD
答案 0 :(得分:1)
在更改任何属性之前,请检查它是MaterialLabel
的类型。
foreach (Control c in this.Controls)
{
if(c.GetType()==typeof(MaterialLabel))
{
c.Font = new Font(c.Font, FontStyle.Bold);
c.ForeColor = Color.White;
}
}
或LarsTech说:
foreach (MaterialLabel c in this.Controls.OfType<MaterialLabel>())
{
c.Font = new Font(c.Font, FontStyle.Bold);
c.ForeColor = Color.White;
}
答案 1 :(得分:0)
几个选项......
foreach (var c in this.Controls)
{
if(c is MaterialLabel)
{
var i = (MaterialLabel)c;
i.Font = new Font(c.Font, FontStyle.Bold);
i.ForeColor = Color.White;
}
}
...
foreach (var c in this.Controls)
{
//slightly faster than the first version but won't work with struct
var i = c as MaterialLabel;
if(i != null)
{
i.Font = new Font(c.Font, FontStyle.Bold);
i.ForeColor = Color.White;
}
}
...
//cleanest
foreach (var c in this.Controls.OfType<MaterialLabel>())
{
c.Font = new Font(c.Font, FontStyle.Bold);
c.ForeColor = Color.White;
}