2011-09-15 19 views
6

Estoy usando ICSharpCode.TextEditor.TextEditorControl como mi editor DSL. Cuando obtengo errores de compilación de DSL, me gustaría destacar el texto ofensivo para proporcionar una mejor experiencia de usuario. Sin embargo, tengo dificultades para encontrar cómo hacerlo.¿Cómo destaco los errores de sintaxis usando ICSharpCode.TextEditor.TextEditorControl?

Hasta ahora, he encontrado que hay una propiedad ShowInvalidLines pero no veo una manera de marcar las líneas como no válidas. También veo HighlightSpanStack propiedad de LineSegment y HighlightingStrategy pero no estoy seguro de cómo se supone que deben usarse.

Cualquier ayuda sería apreciada. ¡Gracias!

Respuesta

11

Para resaltar una parte del texto, utilice un TextMarker. El siguiente código subraya la palabra Error con una línea roja ondulada.

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

puede resaltar el texto con cualquier color de fondo y primer plano y el TextMarkerType apoya subrayado, líneas onduladas o un bloque sólido de color.

+1

funcionó, gracias! Solo tenía que recordar actualizar el control del editor ... –

+0

no funciona en la última versión 4.4.2, sería bueno si alguien pudiera actualizar la sintaxis. por ejemplo, MarketStragety no es más –

+0

La última versión publicada del ICSharpCode.TextEditor fue 3.2.1.6466. Esta pregunta se refiere al control anterior ICSharpCode.TextEditor. AvalonEdit, que es el editor de texto más nuevo incluido con SharpDevelop, tiene una versión 4.4.2. AvalonEdit fue reescrito para admitir WPF y tiene una API muy diferente. –

Cuestiones relacionadas