2009-11-17 1 views
18

Sto sviluppando un programma che sto usando una stringa (generatedCode) che contiene alcuni \n per immettere una nuova riga nel textBox che sto usando (textBox1.Text = generatedCode), ma quando eseguo il programma, invece di rompere quella linea, vedo un quadrato.Come utilizzare n In un TextBox

Ricordate che ho impostato il valore Multiline della casella di testo per True.

risposta

41

Sostituire \ n con \ r \ n - è così che i controlli di Windows rappresentano nuove righe (ma vedi nota in fondo):

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

o

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

Nota: Come discusso nei commenti, è può desidera utilizzare Environment.NewLine. Non è chiaro però - non è ben definito quale separatore di riga i controlli di Windows Form dovrebbero utilizzare quando non sono in esecuzione su Windows. Dovrebbero usare la piattaforma predefinita o quella di Windows (dato che si tratta di una porta di un controllo della GUI di Windows)? Uno degli esempi in MSDN fa utilizza Environment.NewLine, ma in MSDN ho visto esempi orribilmente sbagliati prima d'ora, e la documentazione semplicemente non indica quale dovrebbe essere.

In un mondo ideale, avevamo appena abbiamo un separatore di linea - e anche in un mondo migliore secondo, ogni situazione sarebbe chiaramente definire quale separatore si aspettava line ...

+2

fondamentalmente la stessa cosa, ma è probabilmente più sicuro da usare l'ambiente .N ewLine invece di \ r \ n, penso. – jean

+0

Hmm, domanda - dovrebbe "\ r \ n" essere System.Environment.NewLine? Apprezzo che siano uguali (ish), è più una specie di codice di tipo standardizzato domanda – Murph

+0

Dato che ".NET" non implica "Windows", vorrei concordare con l'uso di 'System.Environment.NewLine'. – qid

6

solito \r\n mi fa una nuova riga in una casella di testo. Provare a sostituire il vostro \n con \r\n solo stare attenti a non si dispone di un mix di \r\n e \n

+0

Buon punto! assicurati solo di textBox1.Text = generatedCode.Replace ("\ r \ n", "\ n"); per ottenere qualsiasi esistente quindi fai il textBox1.Text = generatedCode.Replace ("\ n", "\ r \ n"); Winform continua a scuotere! –

4

Aggiungere un ritorno a capo (\ r) e dovrebbe funzionare:

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

dal utilizzando \ n è più facile sugli occhi (especailly quando la formattazione), e anche a volte non controllare come la stringa di origine è costruita - trovo le migliori prassi è quella di utilizzare:
TextBox1.Text = str.Replace("\r\n", "\n").Replace("\n", Environment.NewLine);