2013-08-06 78 views
14

我正在使用Visual Studio 2010構建一個非常簡單的表單。這一切都工作正常,除了我需要動態繪製標籤到窗體上。我可以得出的標籤,但是當我嘗試和改變newlabel.Font.Size屬性,我得到這個錯誤:無法更改C#中標籤的字體大小

Property or indexer 'System.Drawing.Font.Size' cannot be assigned to -- it is read only 

這是什麼意思?如何解決呢?這是我第一次使用C#程序,如果我正在做一些非常愚蠢的事情,請儘量減少一些。

這裏是我畫的標籤代碼:

Label newlabel = new Label(); 
newlabel.Text = "BOOM"; 
newlabel.Font.Size = 72;//This causes the error 
newlabel.ForeColor = Color.White; 
newlabel.Location = new Point(250,250); 
newlabel.AutoSize = false; 
this.Controls.Add(newlabel); 
+1

你可能需要創建一個新的'Font'大小爲'72'和一切從'newlabel.Font'複製(即當前字體)。 –

回答

24

你必須創建一個使用新字體:newlabel.Font = new Font(fontFamily, size);

+0

作品!謝謝:) – imulsion

11

試試這個

newlabel.Font = new Font(newlabel.Font.FontFamily, Fontsize); 
+0

也是一個很好的答案,謝謝! – imulsion

3
Label newlabel = new Label(); 

newlabel.Font = new System.Drawing.Font(l.Font.FontFamily.Name, 12); 
1
var label1 = new Label(); 
label1.Font = new Font(new FontFamily(System.Drawing.Text.GenericFontFamilies.Serif), 10); 
1

首先,解釋以下錯誤:

Property or indexer 'System.Drawing.Font.Size' cannot be assigned to -- it is read only

這是關於變量可訪問性的編譯時錯誤。在您的示例中,System.Drawing.Font.Size不能被修改,因爲Font類中的屬性被聲明爲public float Size { get; }。您可以通過右鍵單擊「Size」並單擊「轉至定義」查看此功能。

上面顯示的屬性聲明描述了一個名爲Size的浮點值,它具有公共的'getter'方法 - 意味着您可以從該屬性中檢索值。
它沒有'setter'屬性,這使得修改不可能。

由於屬性無法更改,因此您需要創建一個新的Font,將Font屬性更改爲new Font("Times New Roman", 12.0f);之類的內容。看看下面的MSDN documentation,它提供了Font類的所有不同的構造函數。

工作示例如下所示爲您提供方便:

Label newlabel = new Label { 
    Text = "BOOM", 
    Font = new Font("Times New Roman", 12.0f), 
    ForeColor = Color.White, 
    Location = new Point(250, 250), 
    AutoSize = false 
}; 
this.Controls.Add(newlabel);