0

我想在不删除粗体/斜体/下划线格式的情况下更改一大块 RTF 的字体大小(与此问题中的问题类似)。公认的答案是修改文本框的选择,直到SelectionFont属性为,以便找到可以单独修改的一致格式文本的运行。听起来很合理。但是 RichTextBox 控件的实际行为似乎与文档不一致。

RichTextBox.SelectionFontMSDN 的文档中指出:

如果当前文本选择指定了多个字体,则此属性为null

但是,这段使用混合粗体/常规文本的代码的行为与您预期的不同:

var rtb = new RichTextBox {
    Rtf = @"{\rtf1 This is \b bold\b0.}"
};

rtb.SelectAll();
// Now you'd expect rtb.SelectionFont to be null,
// but it actually returns a Font object

有没有其他可靠的方法来格式化文本,这样我就可以在不破坏其他格式的情况下更改字体大小。(直接操作 RTF 是可以的,我并不是绝对要使用 WinForms 来实现这一点)。

4

2 回答 2

0

我已经放弃尝试通过 Winforms 来解决这个问题。当我将更改应用于整个文档(而不仅仅是一个部分)时,事实证明直接修改 RTF 并不难。

在这种情况下,我对由\fs命令表示的字体大小感兴趣。因此,要将所有 8.5pt 文本替换为 10pt 文本,您可以替换\fs17\fs20. (是的,显然,RTF 字体大小以半点为单位)。

这似乎工作得很好,虽然它确实感觉像是“让我们使用正则表达式破坏我们的 HTML”类型的解决方案之一,所以我不相信它非常健壮。

于 2012-11-05T19:54:05.803 回答
0

看看这个: 为richtextbox更改字体而不丢失格式

我认为这是同一个问题。LarsTech 的解决方案非常适合我。

于 2013-10-13T01:40:59.007 回答