禁用RichTextBox或TextBox中的选择突出显示

如何在我的Windows窗体应用程序中禁用RichTexBoxTextBox的选择突出显示,如图所示。

在此处输入图像描述

我需要将选择突出显示颜色从Blue更改为White ,因为我需要始终隐藏TextBoxRichTextBox选择。 我尝试使用RichTextBox.HideSelection = true ,但它并没有像我期望的那样工作。

您可以处理RichTextBox WM_SETFOCUS消息并将其替换为WM_KILLFOCUS

在下面的代码中,我向ExRichTextBox添加了一个Selectable属性。 如果将其设置为false则不会呈现选择突出显示。 它不会将控件设置为只读,如果您需要将其设置为ReadOnly ,则还应将ReadOnly属性设置为true ,将BackColorWhite

 public class ExRichTextBox : RichTextBox { public ExRichTextBox() { Selectable = true; } const int WM_SETFOCUS = 0x0007; const int WM_KILLFOCUS = 0x0008; [DefaultValue(true)] public bool Selectable { get; set; } protected override void WndProc(ref Message m) { if (m.Msg == WM_SETFOCUS && !Selectable) m.Msg = WM_KILLFOCUS; base.WndProc(ref m); } } 

您可以对TextBox控件执行相同的操作。