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?
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();
}
}
Changez votre taille maximale,
label1.MaximumSize = new Size(100, 0);
Et définissez votre taille automatique sur true.
label1.AutoSize = true;
C'est ça!
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.
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 .
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.
Si vous souhaitez un dimensionnement dynamique en association avec une étiquette de wrapping Word, vous pouvez procéder comme suit:
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);
}
Ensemble Auto-Size
pour l'étiquette à true
Dock
pour l'étiquette sur Fill