web-dev-qa-db-fra.com

Label Word wrapping

Existe-t-il un moyen de faire envelopper par un contrôle de libellé .NET ?

Je sais qu'il existe une autre façon d'utiliser un Zone de texte , rendre la propriété BorderStyle sans valeur, propriété ReadOnly sur true et définit la propriété WordWrap et la propriété Multiligne à vrai.

Y a-t-il quelque chose pour une étiquette?

56
Sharpeye500

Reportez-vous à Insérer automatiquement le texte dans une étiquette. Il décrit comment créer votre propre étiquette en croissance.

Voici la source complète tirée de la référence ci-dessus:

using System;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

public class GrowLabel : Label {
  private bool mGrowing;
  public GrowLabel() {
    this.AutoSize = false;
  }
  private void resizeLabel() {
    if (mGrowing) return;
    try {
      mGrowing = true;
      Size sz = new Size(this.Width, Int32.MaxValue);
      sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);
      this.Height = sz.Height;
    }
    finally {
      mGrowing = false;
    }
  }
  protected override void OnTextChanged(EventArgs e) {
    base.OnTextChanged(e);
    resizeLabel();
  }
  protected override void OnFontChanged(EventArgs e) {
    base.OnFontChanged(e);
    resizeLabel();
  }
  protected override void OnSizeChanged(EventArgs e) {
    base.OnSizeChanged(e);
    resizeLabel();
  }
}
22
mindandmedia

Changez votre taille maximale,

label1.MaximumSize = new Size(100, 0);

Et définissez votre taille automatique sur true.

label1.AutoSize = true;

C'est ça!

172
fa wildchild

Il suffit de définir la propriété Label AutoSize sur False. Ensuite, le texte sera enveloppé et vous pourrez redimensionner le contrôle manuellement pour afficher le texte.

38
Abdullah Alhutami

Ironiquement, désactiver AutoSize en lui attribuant la valeur false me permettait de dimensionner les dimensions du contrôle d'étiquette à la fois verticalement et horizontalement, ce qui permettait effectivement la superposition de Word .

17
atconway

Si vous ouvrez le menu déroulant de la propriété Text dans Visual Studio, vous pouvez utiliser la touche Entrée pour fractionner les lignes. Cela ne fonctionnera évidemment que pour le texte statique, sauf si vous connaissez les dimensions maximales du texte dynamique.

8
Jurgen Camilleri

Si vous souhaitez un dimensionnement dynamique en association avec une étiquette de wrapping Word, vous pouvez procéder comme suit:

  1. Mettez l'étiquette à l'intérieur d'un panneau
  2. Manipuler le ClientSizeChanged event pour le panneau, l’étiquette remplissant l’espace:

    private void Panel2_ClientSizeChanged(object sender, EventArgs e)
    {
        label1.MaximumSize = new Size((sender as Control).ClientSize.Width - label1.Left, 10000);
    }
    
  3. Ensemble Auto-Size pour l'étiquette à true

  4. Définissez Dock pour l'étiquette sur Fill
5
noelicus