2010-02-17 5 views

Répondre

1

Pas vraiment. Normalement, il vous suffit de définir la hauteur et la largeur de ce que vous voulez. Y a-t-il une raison particulière pour laquelle vous voulez un certain nombre de caractères sur chaque ligne?

[EDIT]
Je trouve ici un code qui divise une chaîne en morceaux égaux:
Splitting a string into chunks of a certain size
En utilisant, je suis venu avec ce qui suit. Cela fonctionne bien mais a besoin de quelques ajustements.

private void TextBox_KeyUp(object sender, KeyEventArgs e) 
{ 
    var text = (sender as TextBox).Text.Replace(Environment.NewLine, "").Chunk(8).ToList(); 

    (sender as TextBox).Text = String.Join(Environment.NewLine, text.ToArray()); 
    (sender as TextBox).SelectionStart = (sender as TextBox).Text.Length; 
} 

et le procédé d'extension:

public static class Extensions 
{ 
    public static IEnumerable<string> Chunk(this string str, int chunkSize) 
    { 
     for (int i = 0; i < str.Length; i += chunkSize) 
      yield return str.Substring(i, Math.Min(chunkSize, str.Length - i)); 
    } 
} 
+0

La raison en est que la zone de texte fonctionne comme un formateur d'un message qui est sur le point d'être affiché sur un écran externe avec une longueur de ligne fixe. L'utilisateur doit donc le voir formaté tel qu'il sera montré. L'utilisation d'une largeur de zone de texte précise est la solution que j'utilise actuellement, mais il serait beaucoup plus facile de définir le nombre de caractères au lieu de calculer la largeur de la zone de texte appropriée. Surtout quand la valeur change. – gius

Questions connexes