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);
Vous devez créer une nouvelle police en utilisant: newlabel.Font = new Font(fontFamily, size);
essaye ça
newlabel.Font = new Font(newlabel.Font.FontFamily, Fontsize);
Label newlabel = new Label();
newlabel.Font = new System.Drawing.Font(l.Font.FontFamily.Name, 12);
var label1 = new Label();
label1.Font = new Font(new FontFamily(System.Drawing.Text.GenericFontFamilies.Serif), 10);
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);