2009-09-21 8 views
0

J'ai un champ dans une base de données, ce champ a une longueur maximale, et je veux définir une zone de texte à la largeur appropriée. Je crée les zones de texte en cours d'exécution. Comment puis-je calculer la valeur de la propriété width? Par exemple, si j'ai un champ nvarchar (5) nommé IDClient, et que la taille de police est 13, je veux créer une texbox avec une largeur suffisante pour écrire 5 caractères.Relation entre la longueur et la taille de police d'une chaîne et la largeur d'une zone de texte

Répondre

4

Peut-être devriez-vous utiliser TextRenderer.MeasureText(string, font).

Voici un petit échantillon qui devrait pourrait vous aider

 //Get this value from somewhere... 
     TextBox textBox = new TextBox(); 
     int maxWidth = 10; 
     int extraSpace = 3; 

     //Create sample string 
     StringBuilder sb = new StringBuilder(maxWidth); 
     sb.Append('w', maxWidth); 

     //Measure text 
     Size size = TextRenderer.MeasureText(sb.ToString(), textBox.Font); 

     //Set width of TextBox to needed width 
     textBox.Width = size.Width + extraSpace; 
1

Spécifier

input type = 'texte' size = '5' width = 'w' ........>

Vous pouvez calculer w = num_characters * k. Où k est constant. D'abord, gardez k = 15. Ensuite, frappez et essayez jusqu'à ce que vous trouviez le meilleur ajustement.

+0

Aussi, vous devez garder à l'esprit que jusqu'à la police est un type de courrier. Vous devez calculer k par la largeur de 'w'. Parce que c'est l'alphabet le plus large. –

+0

Merci! Ok, laisse supposer que je trouve la valeur K parfaite pour size = 5. Que se passe-t-il lorsque la taille de la police change? Le problème est que je ne connais que la taille de la police en cours d'exécution. J'ai besoin d'un algorithme qui calc W en utilisant la taille et la longueur de la chaîne. – Jonathan

+0

Je sais que ce n'est pas la meilleure approche. Mais vous pouvez le faire: w = num_chars * font_size * k; , puis trouvez k. Puisque la largeur sera directement proportionnelle à la taille de la police (de manière linéaire). Il existera une valeur valide de k pour une face de police. –

Questions connexes