Autoresize contrôle de zone de texte à la verticale
En C# forme, j'ai un panneau ancré tous les côtés, et à l'intérieur, une zone de texte, ancré haut/gauche/droite.
Lorsque le texte est chargé dans la zone de texte, je veux qu'elle s'auto développer verticalement, de sorte que je n'ai pas besoin de faire défiler la zone de texte (faites défiler le panneau en plus, si il y a du texte qui ne rentre pas dans le panneau).
est-il possible de faire cela avec une zone de texte? (je ne suis pas contraint d'utiliser cette commande donc si il y a une autre commande qui correspond à la description, n'hésitez pas à le mentionner)
OriginalL'auteur Andrei S | 2010-05-23
Vous devez vous connecter pour publier un commentaire.
Je pars du principe que c'est une zone de texte multiligne et que vous allez lui permettre de croître verticalement. Ce code a bien fonctionné:
Vous devriez faire quelque chose de raisonnable lorsque la zone de texte est vide, comme le réglage de la MinimumSize propriété.
Il workes mais ne gère pas les lignes sans les espaces. l'un David a écrit poignées
Passant Que si c'est une zone de texte simple?
Alors vous n'avez pas de soins sur la hauteur bien sûr, il est fixe.
OriginalL'auteur Hans Passant
Le courant sélectionné réponse ne gère PAS les lignes sans les espaces tels que "jjjjjjjjjjjjjjjjjjjj"x1000 (pensez à ce qui pourrait arriver si quelqu'un collé une URL)
Ce code résout ce problème:
OriginalL'auteur David Sherret
Vous pouvez utiliser une Étiquette, et affectez à la propriété AutoSize à
true
.OriginalL'auteur SLaks
Je suggérerais à l'aide de
Graphiques.MeasureString
.D'abord vous créer un
Graphics
objet, puis d'appelerMeasureString
sur elle, passant la chaîne et de la zone de texte de la police.Exemple
Vous pouvez également limiter à la verticale de l'axe de réglage uniquement le
textBox.Size.Height
de propriété et l'utilisation de laMeasureString
surcharge qui accepte aussiint width
.Modifier
Comme SLaks souligné, une autre option est d'utiliser
TextRenderer.MeasureString
. De cette façon, il n'y a pas besoin de créer unGraphics
objet.Ici, vous pouvez limiter la verticale à l'redimensionnement à l'aide de Hans technique, en passant par un extra
Size
paramètreMeasureString
avecint.MaxValue
hauteur.g
. Vous devriez appelerTextRenderer.MeasureString
.OriginalL'auteur GeReV
Vous pourrait jeter l'ancre au fond, qui permettra de s'assurer que la zone de texte est redimensionné à la verticale lors de jamais la forme à laquelle il appartient est redimensionnée.
Aussi, une zone de texte que l'évolution de sa taille pourrait ne pas être un élégant chose car il pourrait perturber la manière dont les autres composants sont affichés. Pourquoi ne pas vous donner une taille maximale au lieu de l'avoir redimensionné?
OriginalL'auteur npinti
Essayer cette approche:
aspx.cs code
code aspx
OriginalL'auteur Massimo Della Calce