如何禁用RichTexBox
或TextBox
的高亮选择在我的Windows窗体应用程序如图所示的形象。
我需要从Blue
更改选择突出显示的颜色White
,因为我需要隐藏在选择或TextBox
所有RichTextBox
的时间。我试图用RichTextBox.HideSelection = true
,但如我所料不不行。
您可以处理WM_SETFOCUS
的RichTextBox
消息,并WM_KILLFOCUS
更换。
在下面的代码中,我创建具有ExRichTextBox
属性Selectable
类:
Selectable
:启用或禁用高亮选择。如果设置Selectable
到false
然后高亮选择将被禁用。它是默认启用的。备注:它不会使控制只读,如果你需要使它只读的,你还应该设置ReadOnly
属性true
及其BackColor
到White
。
public class ExRichTextBox : RichTextBox
{
public ExRichTextBox()
{
Selectable = true;
}
const int WM_SETFOCUS = 0x0007;
const int WM_KILLFOCUS = 0x0008;
///<summary>
/// Enables or disables selection highlight.
/// If you set `Selectable` to `false` then the selection highlight
/// will be disabled.
/// It's enabled by default.
///</summary>
[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
控制相同。