2016-09-20 47 views
2

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

enter image description here

我需要改变选择的高亮显示颜色从BlueWhite,因为我需要隐藏在TextBoxRichTextBox所有的时间选择。我试图使用RichTextBox.HideSelection = true,但它并不像我预期的那样工作。

+0

可能重复的[视觉工作室找到并替换高亮颜色](http://stackoverflow.com/questions/7192536/visual-studio-find-and-replace-highlight-color) – active92

+0

谢谢你的答案,但我需要在richtextbox – wong

+0

做什么呢? http://stackoverflow.com/questions/11183599/rich-text-box-how-to-highlight-text-block – active92

回答

1

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

在下面的代码,我添加了一个Selectable属性ExRichTextBox。如果您将其设置为false,则不会呈现选择突出显示。它不会使控制只读,如果你需要使它只读,你也应该设置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控制做同样的。