我想在不删除粗体/斜体/下划线格式的情况下更改一大块 RTF 的字体大小(与此问题中的问题类似)。公认的答案是修改文本框的选择,直到SelectionFont
属性为空,以便找到可以单独修改的一致格式文本的运行。听起来很合理。但是 RichTextBox 控件的实际行为似乎与文档不一致。
在RichTextBox.SelectionFont
MSDN 的文档中指出:
如果当前文本选择指定了多个字体,则此属性为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 来实现这一点)。