web-dev-qa-db-fra.com

Comment utiliser \ n dans une zone de texte

Je suis en train de développer un programme que j'utilise une chaîne (generatedCode) qui contient un \n pour saisir une nouvelle ligne dans la zone de texte que j'utilise (textBox1.Text = generatedCode), mais lorsque j'exécute le programme, au lieu de casser cette ligne, je vois un carré.

N'oubliez pas que j'ai défini la valeur Multiline de la zone de texte sur True.

24
Nathan Campos

Remplacez\n par\r\n - c'est ainsi que les contrôles Windows représentent les retours à la ligne (mais voir la note en bas):

textBox1.Text = generatedCode.Replace("\n", "\r\n");

ou

textBox1.Text = generatedCode.Replace("\n", Environment.NewLine);

Remarque: Comme indiqué dans les commentaires, vous pouvez souhaitez utiliser Environment.NewLine. Il n'est pas clair cependant - il n'est pas bien défini quel séparateur de ligne les contrôles Windows Forms doivent utiliser lorsqu'ils ne s'exécutent pas sur Windows. Doivent-ils utiliser la plate-forme par défaut ou Windows (car c'est un port d'un contrôle GUI Windows)? Un des exemples dans MSDN fait utilise Environment.NewLine, mais j'ai déjà vu des exemples horriblement faux dans MSDN, et la documentation ne précise pas ce qui devrait l'être.

Dans un monde idéal, nous n'aurions qu'un seul séparateur de ligne - et même dans un deuxième meilleur monde, chaque situation définirait clairement le séparateur de ligne auquel il s'attendait ...

49
Jon Skeet

car l'utilisation de\n est plus facile pour les yeux (en particulier lors du formatage), et parfois vous ne contrôlez pas la façon dont la chaîne source est construite - je trouve que la meilleure pratique consiste à utiliser:
TextBox1.Text = str.Replace("\r\n", "\n").Replace("\n", Environment.NewLine);

9
dancer42

Habituellement \r\n m'obtient une nouvelle ligne dans une zone de texte. Essayez de remplacer votre \n avec \r\n faites juste attention à ne pas avoir un mélange de \r\n et \n

6
Bob

Ajoutez un retour chariot (\ r) et cela devrait fonctionner:

TextBox1.Text = "First line\r\nSecond line";
4
MakoCSH