Comment utiliser \ n dans une zone de texte

Je développe un programme qui utilise une chaîne (code generatedCode ) qui contient des \n pour entrer une nouvelle ligne dans la zone de texte que je l’utilise ( textBox1.Text = generatedCode ), mais lorsque textBox1.Text = generatedCode le programme, au lieu de briser cette ligne, je vois un carré.

Rappelez-vous que j’ai défini la valeur Multiline de la zone de texte sur True .

Remplacez \ n par \ r \ n – c’est ainsi que les contrôles Windows représentent les nouvelles lignes (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 souhaiterez peut -être utiliser Environment.NewLine . Cependant, il est difficile de savoir quel type de séparateur de ligne les contrôles Windows Forms doivent utiliser lorsqu’ils ne s’exécutent pas sous Windows. Devraient-ils utiliser la plate-forme par défaut, ou celle de Windows (en tant que port d’un contrôle d’interface graphique Windows)? L’un des exemples de MSDN utilise Environment.NewLine , mais j’ai vu des exemples terriblement faux dans MSDN auparavant, et la documentation ne dit tout simplement pas ce qui devrait être.

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

puisque utiliser \ n est plus facile pour les yeux (surtout 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);

Habituellement, \r\n me fournit une nouvelle ligne dans une zone de texte. Essayez de remplacer votre \n par \r\n mais faites attention à ne pas mélanger \r\n et \n

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

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