2016-09-20 107 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控制做同樣的。