Cuando se utiliza el control Microsoft RichTextBox es posible añadir nuevas líneas de este tipo ...cómo anexar line en RTF utilizando el control RichTextBox
richtextbox.AppendText(System.Environment.NewLine); // appends \r\n
Sin embargo, si ahora ve la RTF generado la \ r \ n los caracteres se convierten en \ par no \ línea
¿Cómo inserto un código de control \ line en el RTF generado?
Lo does't de trabajo:
reemplazo de emergencia
Hacks como la inserción de una ficha al final de la cadena y luego reemplazarla después del hecho, por lo menos así:
string text = "my text";
text = text.Replace("||" "|"); // replace any '|' chars with a double '||' so they aren't confused in the output.
text = text.Replace("\r\n", "_|0|_"); // replace \r\n with a placeholder of |0|
richtextbox.AppendText(text);
string rtf = richtextbox.Rtf;
rtf.Replace("_|0|_", "\\line"); // replace placeholder with \line
rtf.Replace("||", "|"); // set back any || chars to |
Esto casi funciona, se rompe si tiene que apoyar el texto de derecha a izquierda, ya que la secuencia de control de derecha a izquierda siempre termina en el medio del marcador de posición
envío de mensajes clave
public void AppendNewLine()
{
Keys[] keys = new Keys[] {Keys.Shift, Keys.Return};
SendKeys(keys);
}
private void SendKeys(Keys[] keys)
{
foreach(Keys key in keys)
{
SendKeyDown(key);
}
}
private void SendKeyDown(Keys key)
{
user32.SendMessage(this.Handle, Messages.WM_KEYDOWN, (int)key, 0);
}
private void SendKeyUp(Keys key)
{
user32.SendMessage(this.Handle, Messages.WM_KEYUP, (int)key, 0);
}
Esto también termina siendo convertidos a un \ par
¿Hay una manera de publicar un contactado directamente al control Msftedit para insertar un carácter de control?
Estoy totalmente perplejo, ¿alguna idea, chicos? ¡Gracias por tu ayuda!
Una nota, sin embargo, la emulación RichTextBox de mono está bastante rota y, entre otras incompatibilidades, no comprende el separador de línea. Aparece como un carácter de cuadro en el texto. –
Esto funcionó como un encanto para mí, me permitió eliminar el horrible truco que teníamos en su lugar. ¡Nuestros clientes te lo agradecerán! –