При использовании элемента управления Microsoft RichTextBox можно добавлять новые строки, например, такие ...
richtextbox.AppendText(System.Environment.NewLine); // appends \r\n
Однако, если вы теперь просматриваете сгенерированный rtf, символы \ r \ n преобразуются в \ parnot \ line
Как вставить управляющий код \ line в сгенерированный RTF?
Что не работает:
Замена токена
Хаки, такие как вставка токена в конец строки и последующая его замена по факту, примерно так:
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 |
Это почти сработало, оно сломалосьвниз, если вам нужно поддерживать текст справа налево, поскольку последовательность управления справа налево всегда заканчивается в середине заполнителя.
Отправка ключевых сообщений
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);
}
Это также заканчивается преобразованием в \ par
Есть ли способ опубликовать сообщение непосредственно в элементе управления msftedit, чтобы вставить управляющий символ?
Я в полном замешательстве, есть идеи, ребята?Спасибо за вашу помощь!