我需要创建一些RichText并将其复制到剪贴板,标准的“格式化”如粗体/斜体,缩进等。我现在这样做的方式看起来有点不雅......我正在创建一个RichTextBox项目并通过它来应用我的格式:
RichTextBox rtb = new RichTextBox();
Font boldfont = new Font("Times New Roman", 10, FontStyle.Bold);
rtb.Text = "sometext";
rtb.SelectAll()
rtb.SelectionFont = boldfont;
rtb.SelectionIndent = 12;
必须有更好的方法,但经过几个小时的搜索后,我无法想出更好的方法。有什么想法吗?
编辑: RichTextBox(rtb)不会在表单上的任何位置显示/绘制。我只是使用该对象来格式化我的RichText。
答案 0 :(得分:3)
您可能希望在执行所有操作之前暂停richtextbox的布局,以避免不必要的闪烁。这是我过去经常犯的一个错误,它使它看起来“不雅”
答案 1 :(得分:3)
我认为你的技术是实现你想要做的事情的好方法。我知道你的意思......它感觉有点“脏”,因为你正在使用Winforms控件以外的其他东西,但它只是有效。我已经使用这种技术多年了。有兴趣看看是否有其他人有可行的选择。
答案 2 :(得分:3)
答案 3 :(得分:2)
您可以创建一些实用程序扩展方法,使其更“优雅”:)
public static RichTextBox Set(this RichTextBox rtb, Font font, string text)
{
rtb.Text = text;
rtb.SelectAll();
rtb.SelectionFont = font;
rtb.SelectionIndent = 12;
return rtb;
}
并且这样打电话:
someRtb.Set(yourFont, "The Text").AndThenYouCanAddMoreAndCHainThem();
编辑:我现在看到你甚至没有显示它。嗯,有趣,对不起,我没有提供非Rtb方式的帮助。
答案 4 :(得分:1)
您还应该在创建后暂停richtextbox的布局,并在使用后进行处置。
RichTextBox rtb = new RichTextBox();
rtb.SuspendLayout();
//richtext processing goes here...
rtb.Dispose();
不要害羞使用richtextbox进行富文本处理。微软本身就是在this教程中这样做的。 : - )
答案 5 :(得分:0)
我知道已经有一段时间了,但请查看这篇关于将rtf转换为html的stackoverflow帖子。将你的东西放入html,操纵它,然后使用html显示它或将其转换回rtf可能会更容易。