Dans mon code, je crée une étiquette avec les éléments suivants:
Label namelabel = new Label();
namelabel.Location = new Point(13, 13);
namelabel.Text = name;
this.Controls.Add(namelabel);
La chaîne appelée name est définie avant et a une longueur d'environ 50 caractères. Toutefois, seuls les 15 premiers sont affichés dans l'étiquette de mon formulaire. J'ai essayé de jouer avec le MaximumSize de l'étiquette, mais en vain.
Essayez d'ajouter la propriété AutoSize:
namelabel.AutoSize = true;
Lorsque vous placez une étiquette sur un formulaire avec l'éditeur de conception, cette propriété est définie par défaut sur true, mais si vous créez l'étiquette dans le code comme vous l'avez fait, la valeur par défaut est false.
Essayez la propriété AutoSize = true;
Une autre méthode consiste à utiliser la méthode MeasureString de la classe Graphics.
Graphics e = nameLabel.CreateGraphics();
SizeF stringSize = new SizeF();
stringSize = e.MeasureString(name, namelabel.Font);
nameLabel.Width = (int)stringSize.Width;
Vous pouvez utiliser la propriété Label.AutoSize
pour ajuster automatiquement la largeur de votre étiquette afin qu'elle s'adapte correctement à tout le contenu stocké dans Label.Text
.
Il est à noter que lors de la création du libellé à l'aide de l'éditeur de graphismes, cette propriété est définie par défaut sur true, mais lorsque vous créez un libellé par programme, la propriété est définie par défaut sur false.
namelabel.AutoSize = true;
Bien sûr, vous pouvez également définir manuellement la largeur de votre étiquette en utilisant quelque chose comme ci-dessous pour calculer la largeur requise.
Graphics namelabel_g = namelabel.CreateGraphics ();
namelabel.Width = namelabel_g.MeasureString (
namelabel.Text, namelabel.Font
);
La documentation concernant l'utilisation de Label.AutoSize
peut être trouvée sur msdn:
La documentation concernant Graphics.MeasureString
peut être trouvée ici:
panel_saved.Controls.Add(
new Label
{
Location = new Point(1, 2),
Size = new System.Drawing.Size(43, 18),
BorderStyle = BorderStyle.FixedSingle,
Text = "yourdata"
});