繁体   English   中英

仅更改RichTextBox字体系列而不是FontSize

[英]Change RichTextBox font family only not FontSize

如何仅更改RichTextBox(RTB)中的字体系列,保持字体大小不变? 我有一个RTB,可以有不同的字体和字体大小的文本,我想改变所有的内容,以拥有一个新的字体系列,但保留他们从用户的任何大小。 我怎么能实现这个目标? 我知道一个SelectionFont属性,但Font构造函数的每个重载都需要字体大小。

        RichTextBox rtb = new RichTextBox();
        // some code that adds various text of different fonts and font sizes
        rtb.SelectAll();
        rtb.SelectionFont = new Font("arial", ??);

此外,我确实在这篇SO帖子中遇到了Lars Tech的解决方案,但我认为实现该功能太复杂,太多工作。

如果你想避免使用pinvoking解决方案,那么你必须单独遍历字符。 为避免闪烁,您可以使用屏幕外RichTextBox控件来应用更改:

using (RichTextBox tmpRB = new RichTextBox()) {
  tmpRB.SelectAll();
  tmpRB.SelectedRtf = rtb.SelectedRtf;
  for (int i = 0; i < tmpRB.TextLength; ++i) {
    tmpRB.Select(i, 1);
    tmpRB.SelectionFont = new Font("Arial", tmpRB.SelectionFont.Size);
  }
  tmpRB.SelectAll();
  rtb.SelectedRtf = tmpRB.SelectedRtf;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM