2012-06-25 16 views
5

Potrzebuję określonej części mojego tekstu w RTB, aby podświetlić nie w sensie zmiany stylu/koloru czcionki, ale w sensie dokonywania wyboru bloku za pomocą określonego koloru. Jest to podobne do sposobu, w jaki Visual Studio podświetla linię podczas trybu debugowania.Pole tekstu sformatowanego, jak podświetlić blok tekstu

Jak mogę wykonać tę funkcję za pomocą RTB, czy raczej jest to możliwe? Jeśli nie jest to możliwe, chciałbym usłyszeć inny sposób wykonania powyższego zadania.

+0

możliwe duplikat [Jak mają naprzemienne kolory linii dla a Winforms RichTextBox?] (http://stackoverflow.com/questions/5982006/how-to-have-alternating-line-colors-for-a-winforms-richtextbox) –

+0

Myślę, że szukasz [Sci ntillaNET] (http://scintillanet.codeplex.com/). Z drugiej strony, jeśli chcesz to zrobić samodzielnie w RTB, możesz to zrobić, najpierw odnajdując 'lineNumber' używając [TextBoxBase.Lines] (http://msdn.microsoft.com/en-us/library/system .windows.forms.textboxbase.lines.aspx). Następnie ... // Wybierz linię z jej numeru richTextBox.GetFirstCharIndexFromLine (lineNumber); richTextBox.Select (startIndex, długość); // Ustaw wybrany tekst na pierwszym planie i kolor tła richTextBox.SelectionColor = System.Drawing.Color.White; richTextBox.SelectionBackColor = System.Drawin – ABH

Odpowiedz

7

Myślę, że szukasz ScintillaNET.

Z drugiej strony, jeśli chcesz zrobić to samodzielnie w RTB, możesz to zrobić, najpierw znajdując właściwość lineNumber przy użyciu właściwości . Potem ...

//Select the line from it's number 
startIndex = richTextBox.GetFirstCharIndexFromLine(lineNumber); 
richTextBox.Select(startIndex, length); 

//Set the selected text fore and background color 
richTextBox.SelectionColor = System.Drawing.Color.White; 
richTextBox.SelectionBackColor= System.Drawing.Color.Blue; 
+0

Nie ignorujesz zwracanej wartości 'GetFirstCharIndexFromLine()' zamiast zapisywać ją w zmiennej 'startIndex'? – Jack

+1

@Jack - zaktualizowano, dzięki za wyróżnienie. – ABH

9

Tak można ustawić backcolor wybór RichTextBox pomocą RichTextBox.SelectionBackColor obiekt.

int blockStart = 1; //arbitrary numbers to test 
int blockLength = 15; 
richTextBox1.SelectionStart = blockStart; 
richTextBox1.SelectionLength = blockLength; 
richTextBox1.SelectionBackColor = Color.Yellow; 
Powiązane problemy