2013-08-06 12 views
14

Używam Visual Studio 2010 do zbudowania bardzo prostego formularza. Wszystko działa dobrze, chyba że muszę dynamicznie narysować etykietę na formularzu. Mogę wyciągnąć etykietę, ale gdy próbuję i zmienić atrybut newlabel.Font.Size, otrzymuję ten błąd:Nie można zmienić rozmiaru czcionki etykiety w C#

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

Co to oznacza i jak można to naprawić? To mój pierwszy program C#, więc proszę cię, daj mi trochę luzu, jeśli robię coś naprawdę głupiego.

Oto mój kod do rysowania etykiecie:

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

Prawdopodobnie będziesz musiał utworzyć nową 'Font' o rozmiarze' 72' i wszystkiego innego skopiowany z 'newlabel.Font' (czyli obecna czcionka). –

Odpowiedz

24

trzeba stworzyć nową czcionkę za pomocą: newlabel.Font = new Font(fontFamily, size);

+0

Działa! Dziękuję :) – imulsion

11

spróbować tej

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

Również świetna odpowiedź, dzięki! – 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

pierwsze , aby wyjaśnić następujący błąd:

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

Jest to błąd podczas kompilacji związany z dostępnością zmiennej. W twoim przykładzie nie można zmienić System.Drawing.Font.Size, ponieważ właściwość w klasie Font jest zadeklarowana jako public float Size { get; }. Możesz to wyświetlić, klikając prawym przyciskiem myszy Size i klikając " Przejdź do definicji".
Przedstawiona powyżej deklaracja właściwości opisuje wartość zmiennoprzecinkową o nazwie Rozmiar, która ma publiczną metodę "getter" - co oznacza, że ​​można odzyskać wartość z tej właściwości.
Nie ma właściwości "ustawiającej", która uniemożliwia modyfikację.

Ponieważ nieruchomość nie jest w stanie się zmienić, trzeba będzie utworzyć nowy Font zmieniając właściwość coś podobnego new Font("Times New Roman", 12.0f);Font. Zapoznaj się z następującym MSDN documentation, który zawiera wszystkie różne konstruktory dla klasy Font.

przykładem pracy przedstawiono poniżej dla wygody:

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); 
Powiązane problemy