2010-08-05 52 views
0

我正在开发一个C#Windows应用程序。它包括22种形式(即字体,背景色,斜体,单元格颜色,文字前置颜色)控件。我已经创建了一个函数来做到这一点,我得到了一个错误。造型C#表格

我的代码:

foreach (Control cnn in gbsty.Controls) 
{ 
    if (cnn is Label) 
    { 
     if (cnn.Name=="lblheadername") 
     { 
      cnn.Font = FontStyle.Bold; 
     } 
    } 
} 

错误:

Cannot implicitly convert type 'System.Drawing.FontStyle' to 'System.Drawing.Font'

回答

3
cnn.Font = new Font(cnn.Font, FontStyle.Bold); 

查看更多构造上MSDN

1

此外,如果您想拥有共同的字体,标签,文本框等......创建自己的类库可能会更好(正如我所做的那样,也可能是其他人)从基类派生(如标签,文本框等),并强制它们的默认字体设置为给定的大小,颜色等。然后将THOSE添加到表单中,它们将应用相同的样式。

为了防止IDE实际上在表单中保存字体信息(或其他自定义)并直接从类定义中获取,可以采用两种方法之一(我知道)...... Ex :在C#

public class MyCustomLabel : Label 
{ 
    // Either use the [DesignerSerialization...] 
    // OR override and make the FONT as READ-ONLY (via only a GETTER) 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
    public override Font Font 
    { get { return new Font("Arial", 9F, FontStyle.Regular, GraphicsUnit.Point);; } } 

    ... 
    ... 

} 

如果只读,表单设计人员唠叨的价值的错误被只读因为它最初投入的形式,但一旦你删除的“字体”的元素,你我再也不会看到那条信息了。然后,如果你想改变这种字体,大小,颜色等,只需在你的基类中改变它。另外,如果你想创建一个“HEADER”类型的标签作为粗体或其他类型,只需从你的baseclass派生出来,再次取代FONT定义,但是使用ITS粗体/大小/颜色设置...

public class MyHeaderLabel : MyCustomLabel 
{ 
    public override Font Font 
    { get { return new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Point); } 

} 

}