You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改RichTextBox字体大小时选中区域颜色变为黑色如何解决?

成因

对RichTextBox控件直接赋值全局Font属性时,控件内部会触发WM_SETFONT消息处理逻辑,该逻辑会重置所有文本的默认格式属性,同时清除所有仅作用于选区的临时样式配置(包括提前设置的SelectionBackColor和SelectionForeColor),原有的自定义选中色会被系统默认的黑色选中前景色覆盖,最终出现颜色异常。

解决方法

有两种常用的修复方案:

  • 方案1:不直接修改全局Font属性,改为针对选区内的文本设置字体,避免触发全局样式重置
' 保存当前选区状态与自定义颜色
Dim selStart As Integer = RichTextBox5.SelectionStart
Dim selLen As Integer = RichTextBox5.SelectionLength
Dim customBackColor As Color = RichTextBox5.SelectionBackColor
Dim customForeColor As Color = RichTextBox5.SelectionForeColor

' 全选文本后修改字体
RichTextBox5.SelectAll()
RichTextBox5.SelectionFont = New Font("Times New Roman", RichTextBox5.Font.Size - 0.1F, FontStyle.Regular)

' 还原原选区与自定义颜色
RichTextBox5.Select(selStart, selLen)
RichTextBox5.SelectionBackColor = customBackColor
RichTextBox5.SelectionForeColor = customForeColor
  • 方案2:如果必须修改全局Font属性,修改完成后重新赋值自定义选区颜色即可
RichTextBox5.Font = New System.Drawing.Font("Times New Roman", RichTextBox5.Font.Size - 0.1F, FontStyle.Regular)
' 替换为你自定义的颜色值即可
RichTextBox5.SelectionBackColor = Color.LightBlue
RichTextBox5.SelectionForeColor = Color.White

内容的提问来源于stack exchange,提问作者Mehdi Esmaeili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:39:01