5

我需要创建一些带有标准“格式”(如粗体/斜体、缩进等)的 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。

4

6 回答 6

3

这个项目有帮助吗?

http://www.codeproject.com/KB/string/nrtftree.aspx

于 2009-06-05T17:50:23.930 回答
3

我认为你的技术是完成你想做的事情的好方法。我知道你的意思......感觉有点“脏”,因为你正在使用 Winforms 控件来完成它原本的用途,但它确实有效。我多年来一直使用这种技术。有兴趣看看其他人是否有可行的选择。

于 2008-09-25T21:23:39.163 回答
3

在执行所有这些操作之前,您可能希望暂停富文本框的布局,以避免不必要的闪烁。这是我过去常犯的错误之一,使它看起来“不雅”

于 2008-09-25T21:11:22.250 回答
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();

编辑:我现在看到你甚至没有显示它。Hrm,很有趣,抱歉,我对提供非 Rtb 方式没有多大帮助。

于 2008-09-25T21:19:49.313 回答
1

您还应该在创建后暂停富文本框的布局,并在使用后将其丢弃。

RichTextBox rtb = new RichTextBox();
rtb.SuspendLayout();
//richtext processing goes here...
rtb.Dispose();

并且不要羞于使用richtextbox 进行富文本处理。Microsoft 本身在教程中执行此操作。:-)

于 2014-11-05T23:10:00.820 回答
0

我知道已经有一段时间了,但请查看这篇关于将 rtf 转换为 html 的 stackoverflow 帖子。将您的内容转换为 html、对其进行操作、然后使用 html 显示或将其转换回 rtf 可能会更容易。

将 Rtf 转换为 HTML

于 2011-09-05T01:34:26.103 回答