2016-01-07 2 views
6

Ich habe nach der Möglichkeit gesucht, die Textbox-Hervorhebungsfarbe zu ändern, wenn ein Benutzer Text auswählt. Windows verwendet Blau als Standardfarbe. Wenn Sie beispielsweise in Microsoft Outlook eine E-Mail schreiben und Text markieren (hervorheben), ist die Hintergrundfarbe grau.Ändern Sie die Hervorhebungsfarbe der TextBox, wenn ein Benutzer Text auswählt?

Selected text in Outlook

TextBox selected text by user

Jeder sagte, ich brauche Methode außer Kraft setzen OnPaint, aber ich weiß nicht, wie genau das zu tun. Die ausgewählte Hintergrundfarbe von RichTextbox ist nicht die Lösung, da sie die Farbe für den Text ändert, nicht wenn der Benutzer sie auswählt.

+0

Sie benötigen die folgenden zum Beispiel 'int length = richTextBox.TextLength richTextBox.SelectionStart = Länge zu verstehen; richTextBox.SelectionLength = Yourstring.Length; richTextBox.SelectionColor = Color.Blue; so etwas wie das – MethodMan

+0

Das macht eine Hintergrundfarbe auf dem Text, aber wenn Benutzer es auswählen, ist es immer noch blau. Ich suche, die Rechteckfarbe zu ändern, die gezeichnet wird, wenn ein Benutzer einen Text mit seiner Maus oder mit der Umschalttaste auswählt. –

+0

machen Sie eine Google-Suche Ich habe mehrere Beispiele online über Hervorhebung Auswahl Text – MethodMan

Antwort

0

Hallo hier ist der Code zum Ändern der Auswahlfarbe nur daran denken, dass Sie die aktuelle Farbe speichern müssen und dann, sobald Sie die Farbe geändert haben und Ihre Anwendung schließt, müssten Sie es wiederherstellen, weil dies die ändert Farbe des gesamten Computers nicht nur für den aktuellen Prozess.

[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

Dies scheint ein Ansatz, aber mit dem Betriebssystem zu gehen ist ein wenig riskant. –

Verwandte Themen