2010-06-25 4 views
1

J'ai créé un contrôle utilisateur sur winform où je veux afficher du texte sur Label Control lors de l'exécution. Ici, j'ai utilisé textFormatFlag comme WordBreak, puis l'affiche dans la ligne suivante. La taille de l'étiquette est fixée en largeur et variable en hauteur. Maintenant, le problème ici est comment casser une chaîne s'il n'y a pas d'espace entre, par exemple, pas de WordBreak présent dans la chaîne. Je ne veux pas faire de calculs sur la taille de la police et donc modifier la chaîne. Est-ce quelque chose caché dans. Net qui peut faire ce travail pour moi.Comment faire du formage de texte en C# pour ajuster le texte d'un contrôle

sizeCategory = TextRenderer.MeasureText(Source["Parent_Name"].ToString() 
        , lbldbCategory.Font 
        , sizeCategory 
        , TextFormatFlags.WordBreak); 

Considérez les lignes comme une limite de mon étiquette. largeur hauteur. La hauteur étant variable. Considérez ceci, par ex.

Ma chaîne de texte étant

"salkdjasldjkslakdjlsakjdlsakjdkajhk sdjahksajd" //see word break between the string 
-----------------------------------------------| 
salkdjasldjkslakdjlsakjdlsakjdkajhk   | 
sdjahksajd          | 
-----------------------------------------------| 

Ce que je l'ai fait et actuellement obtenir est la suivante.

en raison de mot pause

-----------------------------------------------| 
salkdjasldjkslakdjlsakjdlsakjd     | 
kajhksdjahksajdh        | 
-----------------------------------------------| 

Ce qui se passe est lorsque la chaîne n'a pas d'espace-à-dire pas de mot casser

-----------------------------------------------| 
salkdjasldjkslakdjlsakjdlsakjdkajhksdjahksajdhasdasdasdsadasd| 
-----------------------------------------------| 

Ce que je veux est

-----------------------------------------------| 
salkdjasldjkslakdjlsakjdlsakjdkajhksdjahksajdha| 
sdasdasdsadasd         | 
-----------------------------------------------| 

Répondre

2

Puisque vous êtes e En utilisant un contrôle d'étiquette, laissez AutoSize à true et définissez la propriété MaximumSize sur 150, 0.

Je viens de le tester. Ça marche.

+0

Je n'ai pas trouvé de propriété MaxSize, je ne peux pas le faire automatiquement sinon il va commencer à croître horizontalement ce que je ne peux pas. Je suis libre de le faire pousser en hauteur seulement –

+0

Ma faute, c'est 'MaximumSize'. Et, si vous définissez la largeur maximale, il ne se développera pas horizontalement. –

+0

Est-ce que cela fonctionnera également si je mets la taille automatique à false –

Questions connexes