Ajuster la largeur de vos contrôles en fonction du texte à l'intérieur. (obtenir la largeur d'une chaîne)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 382 fois - Téléchargée 32 fois

Contenu du snippet

Tout le monde sait qu'un Label peut s'ajuster automatiquement en fonction du texte à l'intérieur quand sa propriété "AutoSize" est à true. Il reste que le TextBox peut seulement s'ajuster avec la hauteur du texte. Il est possible d'obtenir la largeur de la chaîne à l'intérieur de ce même TextBox. Pour ensuite ajuster la largeur de celui-ci. Ce petit bout de code est réutilisable pour d'autre contrôle, comme par exemple le Button.

Source / Exemple :


//Initialisation de l'objet TextBox.
TextBox textBox = new TextBox();
textBox.Text = "Allo toi...";

//Création d'un graphique temporaire.
Graphics g = textBox.CreateGraphics();

//On obtient la hauteur et la largeur du texte qui est contenu dans le textBox.
SizeF size = g.MeasureString(textBox.Text, textBox.Font);

//On ajuste maintenant la dimension du textBox.
textBox.Size = size.ToSize();

Conclusion :


C'est la seule manière que j'ai pu trouvé. Si vous connaissez une autre façon, fait moi le savoir.

Merci

A voir également

Ajouter un commentaire

Commentaires

tmcuh
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

la question est repositionner par rapport à quoi? car en toute logique avec les encrage sur la fenêtre la question ne devrait pas se poser. Il reste cependant pertinent qu'un contrôle qui se redimensionne ne peux pas aller jusqu'en dehors de la fenêtre, ni au dessus d'un autre contrôle.
filotto
Messages postés
91
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
21 août 2011

ok merci.
Et si l'on veut repositionner le textbox? As tu une idee?
Cordialement
tmcuh
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

filotto : tu dois dans ce cas ajuster plutot la hauteur suivant :
SizeF size = g.MeasureString(textBox.Text, textBox.Font, textBox.Width);
texBox.Height = size.Height;
... J'ai pas testé si ça marché.
filotto
Messages postés
91
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
21 août 2011

Et si le textbox est multiligne?
Cordialement

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.