在C#中操作富文本的更好方法?

时间:2008-09-25 21:05:28

标签: c# string rtf

我需要创建一些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。

6 个答案:

答案 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可能会更容易。

Convert Rtf to HTML