2010-08-05 32 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); } 

} 

}