我想在不删除粗体/斜体/下划线格式的情况下更改RTF块的字体大小(类似于this question中的问题)。接受的答案是修改文本框的选择,直到SelectionFont
属性为 null ,以便查找可以单独修改的一致格式文本的运行。听起来很合理。但是,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来实现这一点。)
答案 0 :(得分:0)
我已经放弃尝试通过Winforms来解决这个问题。当我将更改应用于整个文档(而不仅仅是一部分)时,事实证明直接修改RTF并不太难。
在这种情况下,我对字体大小感兴趣,它由\fs
命令表示。因此,要使用10pt文本替换所有8.5pt文本,您可以将\fs17
替换为\fs20
。 (是的,显然,RTF字体大小以半个单位为单位)。
这似乎工作得很好,虽然它确实感觉就像其中一个“让我们使用正则表达式破坏我们的HTML”类型解决方案,所以我不相信它非常强大。
答案 1 :(得分:0)
看看这个: Changing font for richtextbox without losing formatting
我认为这是同一个问题。 LarsTech的解决方案非常适合我。