2011-02-08 120 views
15

帶有標籤和「選項」按鈕的表單。通過點擊按鈕,一個新的表單打開,具有2個單選按鈕'Font1'和'Font2',以及兩個按鈕'應用'和'取消'。選擇其中一個單選按鈕並單擊「應用」將使第一張表格上的標籤更改字體。問題是如何改變字體,例如從Tahoma到Arial或標籤的任何其他字體。C#如何更改標籤的字體

選項構成代碼應用按鈕,如果被點擊返回dialogresult.ok ==真,改變標籤的字體第一形式:

private void btnApply_Click(object sender, EventArgs e) 
{ 
    if (radioFont1.Checked) 
    { 
     mainForm.lblName.Font.Name = "Arial"; 'wrong attempt 
    } 
    this.DialogResult = DialogResult.OK; 
} 

第一個表單上的標籤的宣言,這是第二種形式可見:

public static Label lblName = new Label(); 

...

private void mainForm_Load(object sender, EventArgs e) 
{ 
    lblName = lblBarName; 
} 

回答

31

Font.NameFont.XYZProperty等都是隻讀作爲Font是不可變的對象,所以你需要指定一個新的Font對象來替代它:

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size); 

檢查Font類的構造函數進行進一步的選擇。

+0

字體「宋體」不支持'Regular'風格。那是什麼意思? – TheEnd 2011-02-08 22:33:45

+0

字體完整是不可改變的;不只是名稱屬性 – 2011-02-08 22:34:17

+0

@Aaron - 我說`Font.XYZProperty`來推斷所有屬性。我忘了這個詞來形容它,所以感謝提醒我:)。 – GenericTypeTea 2011-02-08 22:35:26

8

一旦創建它不能改變字體 - 所以你需要創建一個新的:

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size); 
4

你需要創建一個新的字體

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);