2010-11-05 17 views
7

Sto usando una casella di testo multilinea e sto ricevendo un comportamento che non riesco a spiegare completamente. Io usoPerché le newline di C# textbox.AppendText() scompaiono quando si utilizza n come terminatore di riga?

textbox.AppendText("line \n"); 

per aggiungere una nuova riga a una casella di testo. Quando si utilizza questo 3 volte, ottengo

line 
line 
line 

visualizzato nella casella di testo. Ora ridimensiono la casella di testo. Il testo diventa

line line line 

Ovvero, i newline scompaiono. So che dovrei usare

textbox.AppendText("line "+ Environment.Newline); 

Quindi so come risolvere il problema. Vorrei sapere perché, quando si usa "\ n", le nuove linee appaiono inizialmente, ma scompaiono quando si ridimensiona.

+0

Io non credo che sia così semplice come spiegato di seguito. System.NewLine "funziona" su Windows, ad esempio perché '\ r' resta in agguato dopo che' \ n' viene rimosso. Ora lo vedo con UWP e Win10 ... Assegno '" \ r \ nhenever "' a SelectedText di una textbox, e il valore 'SelectedText' mostra immediatamente' "\ r> henever" ', per esempio. Dove va \ n? – ruffin

risposta

3

Durante il ridimensionamento, il carattere "\ n" viene rimosso, poiché il ridimensionamento controlla anche la creazione e l'eliminazione di nuove linee basate su "\ n", System.Env.NewLine non viene mai omessa.

3

Piuttosto che una linea simile a questa:

textbox.AppendText("line \n"); 

si consiglia di utilizzare questa linea invece:

textbox.AppendText("line "+ Environment.NewLine); 

Ciò si verifica perché il ritorno a capo per UNIX è \n, ma per i non-unix (cioè Windows) è \r\n. Quando la casella viene ridimensionata, il sistema newline viene sostituito, quindi se hai solo \n, verrà perso nel ridimensionamento.

Riferimento: MSDN: Environment.NewLine Property

Problemi correlati