Determiner la taille du contenu d'un controle

Signaler
Messages postés
1
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
23 juin 2006
-
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
26 juin 2006
-
Bonjour,

J'aimerais savoir s'il existe un moyen de déterminer, pour un contrôle de type textbox ou richtextbox MULTILIGNE, une astuce pour connaitre la taille idéale du controle pour ne pas afficher de barres de défilements, en bloquant par exemple la largeur.

Je récupèredes données d'une source et les contenus peuvent faire de qqs caractères a plusieures lignes et je n'ai pas la moindre idée de la méthode a utiliser pour les afficher a la suite sans recourir a des controles de taille prédéfinies qui fourniront des barres de défilement dont j'aimerais me passer.

Exemple de ce que j'aimerais obtenir

Label   : Contenu court
Label   : Contenu plus long sur plusieurs lignes mais combien
              au juste je ne sais pas a priori...
               ...
               ...
               etc...
Label   : Nouveau contenu court

Aujourd'hui j'arrive a obtenir qqch du genre

Label   : Contenu court
              [espace inutilisé du controle]
              [espace inutilisé du controle]
Label   : Contenu plus long sur plusieurs lignes mais combien
              au juste je ne sais pas a priori...
               ...[contenu tronqué et scrollbars ici]
Label   : Nouveau contenu court
              [espace inutilisé du controle]
              [espace inutilisé du controle]

HELP !!!! :-)

2 réponses

Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
26 juin 2006

Salut,

Passe par un graphics et utilise la méthode MeasureString pour obtenir la taille de ton contenu.
Après adapte ton contrôle en fonction de tes besoins...

Par exemple pour redimensionner un label à la taille de son contenu, tu peux faire un truc du genre :

Bitmap bitmap = new Bitmap(1 , 1);
Graphics graphics = Graphics.FromImage(bitmap);
tonControle.Size = graphics.MeasureString(tonControle.Text , tonControle.Font).ToSize();

(c'est une solution pour Compact Framework, sur le standard tu peux te passer du bitmap pour faire celà).

fd.

 
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
26 juin 2006

Pour ton textBox ca donne un truc du genre :
Graphics g = textBox.CreateGraphics();
SizeF size = g.MeasureString(textBox.Text, textBox.Font);

après tu fais ce que tu veux en fonction de tes besoins..
 
Par exemple

textBox.Size = size.ToSize();

fd.