2015-03-12 4 views

Répondre

1

Pour sélectionner une ligne, utilisez le Select() méthode:

var line = editor.Document.GetLineByOffset(lineOffset); 
editor.Select(line.Offset, line.Length); 

Changer la couleur d'une ligne est programatically quoique délicate, comme AvalonEdit est un éditeur de code, pas un éditeur de texte riche, la coloration est principalement utilisé pour la coloration syntaxique. Selon this post à partir des forums SharpDevelop, vous devez créer un DocumentColorizingTransformer. Leur exemple devrait travailler pour vous (j'ai enlevé toute erreur code de vérification pour meilleure lisibilité):

class LineColorizer : DocumentColorizingTransformer 
{ 
    int lineNumber; 

    public LineColorizer(int lineNumber) 
    { 
     this.lineNumber = lineNumber; 
    } 

    protected override void ColorizeLine(ICSharpCode.AvalonEdit.Document.DocumentLine line) 
    { 
     if (!line.IsDeleted && line.LineNumber == lineNumber) { 
      ChangeLinePart(line.Offset, line.EndOffset, ApplyChanges); 
     } 
    } 

    void ApplyChanges(VisualLineElement element) 
    { 
     // This is where you do anything with the line 
     element.TextRunProperties.SetForegroundBrush(Brushes.Red); 
    } 
} 

Ensuite, l'appliquer pour votre document, vous pouvez l'utiliser comme suit:

editor.TextArea.TextView.LineTransformers.Add(new LineColorizer(lineOffset));