2011-09-15 27 views
6

私はICSharpCode.TextEditor.TextEditorControlを自分のDSLエディタとして使用しています。 DSLのコンパイルエラーが発生した場合、問題のテキストを強調してユーザーエクスペリエンスを向上させたいと考えています。しかし、私はこれを行う方法を見つけるのが難しいです。ICSharpCode.TextEditor.TextEditorControlを使用して構文エラーを強調表示するにはどうすればよいですか?

これまでのところ、ShowInvalidLinesプロパティがあることがわかりましたが、無効な行としてマークする方法はありません。また、HighlightSpanStackのプロパティがLineSegmentHighlightingStrategyであることがわかりますが、どのように使用されるべきかわかりません。

ご協力いただければ幸いです。ありがとう!

答えて

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コントロールを参照します。 SharpDevelopに含まれている新しいテキストエディタであるAvalonEditにはバージョン4.4.2があります。 AvalonEditはWPFをサポートするために書き直され、非常に異なるAPIを持っています。 –

関連する問題