3

在打开表单之前,我使用以下代码检查其标签是否然后更改字体

foreach (Label ctl in frm.Controls)
{
    ctl.Font = usefontgrid;
}

但在第一行返回错误,因为它检查其他控件类型,如文本框或按钮等。

我如何检查对象是否只是标签然后去每个?

4

3 回答 3

4

尝试这个;

foreach (Control c in this.Controls)
{
    if (c is Label)
        c.Font = usefontgrid;
}

或者

foreach (var c in this.Controls.OfType<Label>())
{
    c.Font = usefontgrid;
}
于 2013-08-28T06:45:36.333 回答
3

不清楚您将此代码放在哪里(应该在初始化组件之后),但请尝试

foreach (Label ctl in frm.Controls.OfType<Label>())
{
    ctl.Font = usefontgrid;
}

还有下面的Linq做同样的事情

foreach (Label ctl in frm.Controls.Where(x => x is Label))
于 2013-08-28T06:46:04.117 回答
0

尝试这个。

 foreach (Control ctl in frm.Controls)
    {
    if(ctl.GetType()==typeof(Label)){
        ctl.Font = usefontgrid;
    }
    }
  1. frm.controls 将提供所有控件
  2. 您需要检查该控件是否为Label类型。
于 2013-08-28T06:46:43.657 回答