2016-01-07 41 views
6

私は、ユーザーがテキストを選択したときに、テキストボックスハイライトの色を変更する方法を探していました。 Windowsはデフォルトの色として青を使用します。たとえば、Microsoft Outlookでは、メールを書き、テキストを選択(強調表示)すると、背面の色はグレーです。ユーザーがテキストを選択したときにTextBoxハイライトの色を変更しますか?

Selected text in Outlook

TextBox selected text by user

誰もが、私は方法をのOnPaintオーバーライドする必要があるが、私はそれを行う方法を正確に知っていないと述べました。 RichTextboxの選択した背景色は、ユーザーが選択したときではなく、テキストの色を変更するため、解決策ではありません。

+0

。 richTextBox.SelectionLength = yourstring.Length; richTextBox.SelectionColor = Color.Blue; 'のようなもの – MethodMan

+0

これは、テキストに背景色を付けますが、ユーザーがそれを選択すると、それでも青です。 ユーザーがマウスでShiftキーを押しながらテキストを選択したときに描画される矩形の色を変更しようとしています。 –

+0

Google検索を行う私は選択テキストを強調表示することについてオンラインでいくつかの例を見てきました – MethodMan

答えて

0

こんにちは、選択色を変更するコードは、現在の色を保存する必要があることを覚えておいてから、色を変更してアプリケーションを閉じると、復元する必要があります。現在のプロセスだけではなく、コンピュータ全体の色。あなたは、たとえば次のよう `int型の長さ= richTextBox.TextLength richTextBox.SelectionStart =長さを理解する必要が

[DllImport("user32.dll")] 
    static extern bool SetSysColors(int cElements, int[] lpaElements, uint[] lpaRgbValues); 


    void ChangeSelectColour(Color color) 
    { 
     const int COLOR_HIGHLIGHT = 13; 
     const int COLOR_HIGHLIGHTTEXT = 14; 
     // You will have to set the HighlightText colour if you want to change that as well. 


     //array of elements to change 
     int[] elements = { COLOR_HIGHLIGHT }; 


     List<uint> colours = new List<uint>(); 
     colours.Add((uint)ColorTranslator.ToWin32(color)); 

     //set the desktop color using p/invoke 
     SetSysColors(elements.Length, elements, colours.ToArray()); 
    } 
+0

これはアプローチのようですが、OSに行くのは少し危険です。 –

関連する問題