it-swarm.com.de

Schriftgröße der Beschriftung in C # kann nicht geändert werden

Ich verwende Visual Studio 2010 zum Erstellen eines sehr einfachen Formulars. Alles funktioniert gut, außer ich muss ein Etikett dynamisch auf das Formular zeichnen. Ich kann das Etikett zeichnen, aber wenn ich versuche, das newlabel.Font.Size-Attribut zu ändern, erhalte ich folgende Fehlermeldung:

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

Was bedeutet das und wie kann ich es beheben? Dies ist mein erstes C # -Programm. Wenn ich etwas wirklich Dummes mache, lass mich bitte etwas locker.

Hier ist mein Code zum Zeichnen des Labels:

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);
14
imulsion

Sie müssen eine neue Schriftart erstellen mit: newlabel.Font = new Font(fontFamily, size);

24
Magn3s1um

versuche dies 

newlabel.Font = new Font(newlabel.Font.FontFamily, Fontsize);
11
Ajay P
Label newlabel = new Label();

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

Erstens, um den folgenden Fehler zu erklären:

Die Eigenschaft oder der Indexer 'System.Drawing.Font.Size' kann nicht zugewiesen werden - er ist schreibgeschützt

Dies ist ein Kompilierungsfehler in Bezug auf die Verfügbarkeit einer Variablen. In Ihrem Beispiel kann System.Drawing.Font.Size nicht geändert werden, da die Eigenschaft in der Font-Klasse als public float Size { get; } deklariert ist. Sie können dies anzeigen, indem Sie mit der rechten Maustaste auf Size klicken und auf "Gehe zur Definition".

Die Eigenschaftsdeklaration oben beschreibt einen Float-Wert namens Size, der eine öffentliche Getter-Methode hat. Dies bedeutet, dass Sie einen Wert aus dieser Eigenschaft abrufen können.
Es hat keine 'Setter'-Eigenschaft, die eine Modifikation unmöglich macht.

Da die Eigenschaft nicht geändert werden kann, müssen Sie eine neue Font erstellen, indem Sie die Font-Eigenschaft in etwas wie new Font("Times New Roman", 12.0f); ändern. Schauen Sie sich die folgende MSDN-Dokumentation an , die alle verschiedenen Konstruktoren für die Font-Klasse enthält .

Ein Arbeitsbeispiel ist unten aufgeführt, um Ihnen die Arbeit zu erleichtern:

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);
1
Nathangrad