2011-09-15 5 views
6

ICSharpCode.TextEditor.TextEditorControl을 내 DSL 편집기로 사용하고 있습니다. DSL 컴파일 오류가 발생하면 더 나은 사용자 환경을 제공하기 위해 불쾌감을주는 텍스트를 강조하고 싶습니다. 그러나, 나는 이것을하는 방법을 찾는 데 어려움을 겪고있다.ICSharpCode.TextEditor.TextEditorControl을 사용하여 구문 오류를 강조 표시하려면 어떻게합니까?

지금까지 나는 ShowInvalidLines 속성이 있지만 모든 행을 유효하지 않은 것으로 표시하는 방법을 발견하지 못했습니다. 또한 HighlightSpanStack 속성이 LineSegment이고 HighlightingStrategy인데 사용 방법을 잘 모르는 경우도 있습니다.

도움을 주시면 감사하겠습니다. 감사!

답변

11

텍스트를 강조 표시하려면 TextMarker를 사용하십시오. 다음 코드는 Error라는 단어에 빨간색 물결 모양 줄을 밑줄 긋습니다.

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를 사용합니다. –

관련 문제