当使用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