2009-11-08 12 views
14

Jak wyróżnić składnię w formancie richtextbox JAK TYPY UŻYTKOWNIKÓW i KORZYSTANIE Z ciągu znaków [] słowa kluczowe. Niedługo opublikuję niedużą notatkę w Internecie i chcę, aby miała ona podświetlanie składni. Używam formularzy systemu Windows. Czy ktoś może opublikować przykład kodu?Jak wyróżnić składnię w RichTextBox [C#]?

Odpowiedz

1

używasz WinForms lub WPF?

Jeśli WPF, możesz rzucić okiem na AvalonEdit. Jest bezpłatny i open source i jest używany w SharpDevelop (open source IDE).

1

Możesz zmienić czcionkę wybranych słów w richtextbox. Spójrz na właściwości Wybierz i WybraneFont kontroli.

Ale zasadniczo musisz powtórzyć słowa, sprawdzić, czy słowo jest obecne w słowach kluczowych, a następnie zmienić czcionkę, korzystając z wyżej wymienionych właściwości.

0

Niezupełnie odpowiedź na Twoje pytanie, ale czy spojrzałeś na komponent edytora tekstu z SharpDevelop? Jest dość lekki (< 200kB IIRC), może być łatwo osadzony w aplikacjach WinForms i ma wbudowane podświetlanie składni dla wielu języków.

W przeciwnym razie możesz spojrzeć na this CodeProject page. Ponownie formatuje RTF podczas pisania, co nie jest zbyt wydajne w przypadku dużych plików i zawiera kilka przerażających bloków catch (Exception) { }, więc nie jestem pewien, czy użyłbym go w aplikacji o krytycznym znaczeniu dla życia, ale na pewno jest to dobry początek wskaż, jak to zrobić.

0

Podświetlanie składni nie jest zadaniem łatwym do wykonania wydajnie. Wiele rozwiązań, które można znaleźć (takich jak modyfikacja RTF) jest rozwiązaniem jednorazowym. Jeśli chcesz podświetlić i odznaczyć wyrazy w locie podczas edycji, twój kod musi być na to przygotowany. Nie wymyśliłbym ponownie koła i nie użyłem ICSharp.TextEditor lub podobnego do rozwiązania twojego problemu.

+2

Podświetlanie składni, w przypadku renderera tekstowego przeznaczonego do oddzwaniania lub iteracyjnego odbierania tekstu przed renderowaniem, jest w rzeczywistości dość banalne: jest to tylko analiza leksykalna, która klasyfikuje tekst zgodnie z jego typem tokena. Ale RTF i inne edytory bogate nie są zaprojektowane w ten sposób, z oddzieleniem danych modelu od jego prezentacji. –

+0

Tak, wygląda na to, że RTF wygląda całkiem dzisiaj ... :-) – jdehaan

4

Sterowanie Scintilla jest znakomitym edytorem kodu źródłowego, który zawiera podświetlanie składni wśród całej gamy innych funkcji. Możesz go osadzić w swojej własnej aplikacji i jest dostępny .NET wrapper.

Za pomocą Scintilla można określić słowa kluczowe, a następnie będzie stosować podświetlanie składni podczas pisania.

+0

Jak zainstalować .dll? –

+0

Jeśli pobierzesz .NET Wrapper z http://scintillanet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34393, możesz po prostu dodać plik ScintillaNet.dll do "Referencji" swojego projektu (jeśli jesteś przy użyciu Visual Studio). –

+0

wymaga wdrożenia jednej z bibliotek dll do systemu windows \ system32, co jest dużym minusem. –