web-dev-qa-db-fra.com

Impossible de changer la taille de la police de l'étiquette en C #

J'utilise Visual Studio 2010 pour créer un formulaire très simple. Tout fonctionne bien, sauf que je dois dessiner dynamiquement une étiquette sur le formulaire. Je peux dessiner l'étiquette, mais quand j'essaie de changer l'attribut newlabel.Font.Size, j'obtiens cette erreur:

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

Qu'est-ce que cela signifie et comment puis-je résoudre ce problème? Il s’agit de mon tout premier programme C #. Veuillez me laisser un peu de temps si je fais quelque chose de vraiment stupide.

Voici mon code pour dessiner l'étiquette:

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

Vous devez créer une nouvelle police en utilisant: newlabel.Font = new Font(fontFamily, size);

24
Magn3s1um

essaye ça 

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

Tout d'abord, pour expliquer l'erreur suivante:

La propriété ou l'indexeur 'System.Drawing.Font.Size' ne peuvent pas être affectés à - il est en lecture seule

C'est une erreur de compilation concernant l'accessibilité d'une variable. Dans votre exemple, System.Drawing.Font.Size ne peut pas être modifié car la propriété de la classe Font est déclarée en tant que public float Size { get; }. Vous pouvez visualiser ceci en cliquant avec le bouton droit sur Size et en cliquant sur "Aller à la définition".

La déclaration de propriété ci-dessus décrit une valeur flottante appelée Size qui a une méthode "getter" publique, ce qui signifie que vous pouvez récupérer une valeur à partir de cette propriété.
Il n'a pas de propriété 'setter' qui rend la modification impossible .

Étant donné que la propriété ne peut pas être modifiée, vous devez créer une nouvelle Font en modifiant la propriété Font en quelque chose comme new Font("Times New Roman", 12.0f);. Jetez un coup d’œil à la Documentation MSDN suivante qui fournit tous les différents constructeurs de la classe Font .

Un exemple de travail est présenté ci-dessous pour plus de commodité:

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