禁用高亮选择RichTextBox中或文本框

问题描述 投票:4回答:1

如何禁用RichTexBoxTextBox的高亮选择在我的Windows窗体应用程序如图所示的形象。

我需要从Blue更改选择突出显示的颜色White,因为我需要隐藏在选择或TextBox所有RichTextBox的时间。我试图用RichTextBox.HideSelection = true,但如我所料不不行。

c# winforms textbox selection richtextbox
1个回答
4
投票

您可以处理WM_SETFOCUSRichTextBox消息,并WM_KILLFOCUS更换。

在下面的代码中,我创建具有ExRichTextBox属性Selectable类:

  • Selectable:启用或禁用高亮选择。如果设置Selectablefalse然后高亮选择将被禁用。它是默认启用的。

备注:它不会使控制只读,如果你需要使它只读的,你还应该设置ReadOnly属性true及其BackColorWhite

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控制相同。

© www.soinside.com 2019 - 2024. All rights reserved.