2011-09-15 58 views
6

我使用ICSharpCode.TextEditor.TextEditorControl作爲我的DSL編輯器。當我收到DSL編譯錯誤時,我想突出顯示違規文本以提供更好的用戶體驗。但是,我很難找到如何做到這一點。如何使用ICSharpCode.TextEditor.TextEditorControl突出顯示語法錯誤?

到目前爲止,我發現有一個ShowInvalidLines屬性,但我沒有看到將任何行標記爲無效的方法。我還看到LineSegmentHighlightingStrategyHighlightSpanStack財產,但不知道他們應該如何使用。

任何幫助,將不勝感激。謝謝!

回答

11

要突出顯示一段文字,請使用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支持下劃線,波浪線或彩色的固體塊的文本。

+1

它的工作,謝謝!我只是不得不記得刷新編輯器控制... –

+0

不適用於最新的4.4.2版本,如果有人可以更新語法將是很好的。例如MarketStragety不再是 –

+0

ICSharpCode.TextEditor的最新版本是3.2.1.6466。此問題涉及舊的ICSharpCode.TextEditor控件。 AvalonEdit是SharpDevelop附帶的新型文本編輯器,它具有4.4.2版本。 AvalonEdit被重寫爲支持WPF,並且具有非常不同的API。 –