Как выделить синтаксические ошибки, используя ICSharpCode.TextEditor.TextEditorControl?

Я использую ICSharpCode.TextEditor.TextEditorControl как мой редактор DSL. Когда я получаю ошибки компиляции DSL, я хотел бы выделить оскорбительный текст, чтобы улучшить взаимодействие с пользователем. Однако мне трудно найти, как это сделать.

До сих пор я обнаружил, что есть ShowInvalidLines свойство, но я не вижу способа пометить какие-либо строки как недействительные. Я тоже вижу HighlightSpanStack собственностью LineSegment а также HighlightingStrategy но не уверен, как они должны быть использованы.

Любая помощь будет оценена. Спасибо!

1 ответ

Решение

Чтобы выделить фрагмент текста, используйте TextMarker. Следующий код подчеркивает слово Ошибка красной волнистой линией.

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);

Вы можете выделить текст любым цветом фона и переднего плана, а TextMarkerType поддерживает подчеркивание, волнистые линии или сплошной блок цвета.

Другие вопросы по тегам