2011-09-15 16 views
6

Używam ICSharpCode.TextEditor.TextEditorControl jako mojego edytora DSL. Kiedy dostaję błędy kompilacji DSL, chciałbym podkreślić obraźliwy tekst, aby zapewnić lepsze wrażenia użytkownika. Mam jednak trudności ze znalezieniem tego sposobu.Jak wyróżnić błędy składni za pomocą ICSharpCode.TextEditor.TextEditorControl?

Do tej pory odkryłem, że istnieje właściwość ShowInvalidLines, ale nie widzę sposobu, aby oznaczyć jakiekolwiek wiersze jako nieprawidłowe. Widzę także HighlightSpanStack właściwość LineSegment i HighlightingStrategy, ale nie jestem pewien, w jaki sposób mają być używane.

Każda pomoc zostanie doceniona. Dzięki!

Odpowiedz

11

Aby wyróżnić fragment tekstu, użyj funkcji TextMarker. Poniższy kod podkreśla słowo Błąd z czerwoną falistą linią.

TextEditorControl textEditor = new TextEditorControl(); 
textEditor.Text = "Mark Error"; 

int offset = 5; 
int length = 5; 
TextMarker marker = new TextMarker(offset, length, TextMarkerType.WaveLine, Color.Red); 
textEditor.Document.MarkerStrategy.AddMarker(marker); 

Można wyróżnić tekst z dowolnego tła i kolorem, a TextMarkerType obsługuje podkreślając, faliste linie lub stałego bloku koloru.

+1

zadziałało, dziękuję! Musiałem tylko pamiętać, aby odświeżyć kontrolę edytora ... –

+0

nie działa w najnowszej wersji 4.4.2, byłoby dobrze, gdyby ktoś mógł zaktualizować składnię. na przykład MarketStragety nie jest już więcej –

+0

Ostatnia wersja wydana przez ICSharpCode.TextEditor to 3.2.1.6466. To pytanie dotyczy starszej kontrolki ICSharpCode.TextEditor. AvalonEdit, który jest nowszym edytorem tekstu zawartym w SharpDevelop, ma wersję 4.4.2. AvalonEdit został ponownie napisany w celu obsługi WPF i ma bardzo różne API. –

Powiązane problemy