При использовании элемента управления Microsoft RichTextBox можно добавить новые строки, такие как...
richtextbox.AppendText(System.Environment.NewLine); // appends \r\n
Однако, если вы теперь просматриваете сгенерированный rtf, символы \r\n преобразуются в \par not\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 для вставки управляющего символа?
Я полностью в тупике, все идеи ребята? Спасибо за вашу помощь!