2

良い一日!

コードの簡単なエディターを作成しようとしているので、テキスト行を選択して色を赤に変更できるようにしたいICSharpCode.AvalonEdit.TextEditor.

しかし、私はそれを使用する方法がわかりません。テキスト行の色を変更するのを手伝ってもらえますか?

ありがとうございました!

4

1 に答える 1

4

行を選択するには、Select() メソッドを使用します。

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

AvalonEdit はコード エディターであり、リッチ テキスト エディターではないため、行の色をプログラムで変更するのは簡単ではありません。色付けは主に構文の強調表示に使用されます。SharpDevelop フォーラムのこの投稿によると、DocumentColorizingTransformer を作成する必要があります。それらの例はあなたのために働くはずです(読みやすくするためにすべてのエラーチェックコードを削除しました):

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

次に、ドキュメントに適用するには、次のように使用できます。

editor.TextArea.TextView.LineTransformers.Add(new LineColorizer(lineOffset));
于 2015-03-12T13:10:48.370 に答える