當使用Microsoft RichTextBox控件,可以增加新的線路像這樣追加\行成RTF ...如何使用RichTextBox控件
richtextbox.AppendText(System.Environment.NewLine); // appends \r\n
但是,如果您現在查看生成的RTF的\ r \ n字符轉換爲\ par不行\行
如何在生成的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);
}
這也最終被轉換成\相提並論
有沒有一種方法來發布直接傳遞消息到msftedit控制插入控制字符?
我完全難住,任何想法傢伙?謝謝你的幫助!
但是,注意,mono的RichTextBox仿真相當破碎,除其他不兼容外,不理解行分隔符。它在文本中顯示爲一個箱子字符。 – 2012-01-15 11:42:37
這對我來說就像一個魅力,它允許我刪除我們已經到位的可怕的黑客。我們的客戶會感謝你! – 2012-01-25 20:25:58