禁用RichTextBox或TextBox中的选择突出显示
如何在我的Windows窗体应用程序中禁用RichTexBox
或TextBox
的选择突出显示,如图所示。
我需要将选择突出显示颜色从Blue
更改为White
,因为我需要始终隐藏TextBox
或RichTextBox
选择。 我尝试使用RichTextBox.HideSelection = true
,但它并没有像我期望的那样工作。
您可以处理RichTextBox
WM_SETFOCUS
消息并将其替换为WM_KILLFOCUS
。
在下面的代码中,我向ExRichTextBox
添加了一个Selectable
属性。 如果将其设置为false
则不会呈现选择突出显示。 它不会将控件设置为只读,如果您需要将其设置为ReadOnly
,则还应将ReadOnly
属性设置为true
,将BackColor
为White
:
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
控件执行相同的操作。