web-dev-qa-db-fra.com

Ajouter par programme une étiquette à un formulaire Windows (longueur de l'étiquette?)

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.

9
Wilson

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.

9
LarsTech

Essayez la propriété AutoSize = true;

MSDN refs

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;
3
Steve

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:

1
panel_saved.Controls.Add(
    new Label 
    { 
        Location = new Point(1, 2), 
        Size = new System.Drawing.Size(43, 18), 
        BorderStyle = BorderStyle.FixedSingle, 
        Text = "yourdata" 
    });
0
Dipesh adhikari