如何使用RichTextBox控件向RTF追加一行在使用MicrosoftRichTextBox控件时,可以像这样添加一个新行...richtextbox.AppendText(System.Environment.NewLine);//appendsrn但是,如果您现在查看生成的rtf,rn字符将转换为par而不是line如何将行控制代码插入生成的RTF?什么不起作用:令牌替换黑客喜欢在字符串末尾插入一个令牌并在事后替换它,所以像这样:stringtext="mytext";text=text.Replace("||""|");//替换任何'|'带有双“||”的字符所以他们不会在输出中混淆。text=text.Replace("rn","_|0|_");//用占位符|0|替换rnrichtextbox.AppendText(文本);stringrtf=richtextbox.Rtf;rtf.Replace("_|0|_","\line");//用行替换占位符rtf.Replace("||","|");//回退任何||字符到|这几乎可以工作,如果你必须支持从右到左的文本,它就会崩溃,因为从右到左的控制序列总是在占位符的中间结束。发送密钥消息publicvoidAppendNewLine(){Keys[]keys=newKeys[]{Keys.Shift,Keys.Return};发送键(键);}privatevoidSendKeys(Keys[]keys){foreach(Keyskeyinkeys){SendKeyDown(key);}}privatevoidSendKeyDown(Keyskey){user32.SendMessage(this.Handle,Messages.WM_KEYDOWN,(int)key,0);}privatevoidSendKeyUp(Keyskey){user32.SendMessage(this.Handle,Messages.WM_KEYUP,(int)key,0);这也最终被转换为par有没有办法将消息直接发布到msftedit控件以插入控制字符?我完全被难住了,有什么想法吗?感谢您的帮助!添加Unicode“行分隔符”(U+2028)确实有效,如我的测试所示:richText.AppendText("你好,世界!u2028");stringrtf=richText.Rtf;richText.AppendText(rtf);当我运行程序时,我得到:你好,世界!你好世界!{rtf1ansiansicpg1252deff0deflang1031{fonttbl{f0fnilfcharset0快递新;}}{colortbl;red255green255blue255;}viewkind4uc1pardcf1f0fs17Hello,World!lineHello,World!linepar}它会添加行但不会添加行。由于您想使用不同的RTF代码,我认为您可能需要忘记简单的AppendText()方法并直接操作RichTextBox的.Rtf属性。这是一个示例(测试)来演示:RichTextBoxrtb=newRichTextBox();//这只是获取文本框以填充其Rtf属性...在典型用法中可能没有必要rtb.AppendText("blah");实时广播.Clear();字符串rtf=rtb.Rtf;//排除最后的}和它后面的任何内容,这样我们就可以使用Append而不是InsertStringBuilderrichText=newStringBuilder(rtf,0,rtf.LastIndexOf('}'),rtf.Length/*这个容量应该选择特定的应用*/);对于(inti=0;我输出:原始RTF数据:{rtf1ansiansicpg1252deff0deflang1033{fonttbl{f0fnilfcharset0MicrosoftSansSerif;}}viewkind4UC1PARDF0fs17par}新RTF数据:{rtf1ansiansicpg1252deff0deflang1033{fonttbl{f0fnilfcharset0MicrosoftSansSerif;}}viewkind4UC1PARDF0fs17parexampletext0lineexampletext1lineexampletext2lineexampletext3lineexampletext4line}生成的RTF数据:{rtf1ansiansicpg1252deff0deflang1033{fonttbl{f0fnilfcharset0Microsoft无衬线字体;}}viewkind4UC1PARDF0fs17parexampletext0lineexampletext1lineexampletext2lineexampletext3lineexampletext4par}如果你用段落编写richtextbox,你可以使用与LineBreak()相同的代码,如下所示ParagraphmyParagraph=newParagraph();FlowDocumentmyFlowDocument=newFlowDocument();//在段落中添加一些粗体文本myParagraph.Inlines.Add(newBold(newRun(@"TestDescription:")));myParagraph.Inlines.Add(newLineBreak());//添加新行使用LineBreak()myParagraph.Inlines.Add(newRun("mytext"));myFlowDocument.Blocks.Add(myParagraph);myrichtextboxcontrolid.Document=myFlowDocument;希望这对您有所帮助!以上就是C#学习教程:如何使用RichTextBox控件给RTF的全部内容附加行。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
