Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ICSharpCode.AvalonEdit.TextEditor更改文本颜色?_C#_Wpf_Avalonedit_Icsharpcode - Fatal编程技术网

C# 如何在ICSharpCode.AvalonEdit.TextEditor更改文本颜色?

C# 如何在ICSharpCode.AvalonEdit.TextEditor更改文本颜色?,c#,wpf,avalonedit,icsharpcode,C#,Wpf,Avalonedit,Icsharpcode,你好 我正在尝试制作简单的代码编辑器,因此我希望能够使用ICSharpCode.AvalonEdit.textdeditor选择文本行并将其颜色更改为红色 但我不知道如何使用它。 你能帮我改变一下文本行的颜色吗 谢谢大家! 要选择线,请使用选择方法: var line = editor.Document.GetLineByOffset(lineOffset); editor.Select(line.Offset, line.Length); 通过编程更改行的颜色是很棘手的,因为AvaloneE

你好

我正在尝试制作简单的代码编辑器,因此我希望能够使用ICSharpCode.AvalonEdit.textdeditor选择文本行并将其颜色更改为红色

但我不知道如何使用它。 你能帮我改变一下文本行的颜色吗


谢谢大家!

要选择线,请使用选择方法:

var line = editor.Document.GetLineByOffset(lineOffset);
editor.Select(line.Offset, line.Length);
通过编程更改行的颜色是很棘手的,因为AvaloneEdit是一个代码编辑器,而不是富文本编辑器,所以颜色主要用于语法高亮显示。根据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));