2010-11-05 14 views
7

Estoy usando un cuadro de texto de líneas múltiples, y estoy obteniendo un comportamiento que no puedo explicar por completo. Yo uso¿Por qué las líneas nuevas C# textbox.AppendText() desaparecen cuando se usa n como terminador de línea?

textbox.AppendText("line \n"); 

para agregar una nueva línea a un cuadro de texto. Al usar esto 3 veces, obtengo

line 
line 
line 

mostrados en el cuadro de texto. Ahora, cambio el tamaño del cuadro de texto. El texto se convierte en

line line line 

Es decir, las líneas nuevas desaparecen. Sé que debería usar

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

Así que sé cómo resolver el problema. Me gustaría saber por qué, cuando se usa "\ n", las líneas nuevas aparecen inicialmente, pero desaparecen al cambiar el tamaño.

+0

Yo no creo que sea tan sencillo como se explica a continuación. System.NewLine "funciona" en Windows, por ejemplo, porque el '\ r' se queda después de que se elimine el' \ n'. Estoy viendo eso con UWP y Win10 ahora ... asigno '" \ r \ nhenever "' al texto seleccionado de un cuadro de texto, y el valor 'SelectedText' inmediatamente muestra' "\ r> henever" ', por ejemplo. ¿A dónde va el '\ n'? – ruffin

Respuesta

3

Al cambiar el tamaño, ese carácter "\ n" se elimina, ya que el cambio de tamaño también controla la creación y eliminación de nuevas líneas basadas en "\ n", System.Env.NewLine nunca se omite.

3

En lugar de una línea que tiene este aspecto:

textbox.AppendText("line \n"); 

se debe utilizar esta línea en su lugar:

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

Esto se debe a que la nueva línea para UNIX es \n, pero por falta de Unix (es decir, Windows) es \r\n. Cuando se cambia el tamaño de la caja, se reemplaza la nueva línea del sistema, por lo tanto, si solo tiene \n, se perderá en el cambio de tamaño.

Referencia: MSDN: Environment.NewLine Property

Cuestiones relacionadas