You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AvalonEdit中如何为特定单词重着色?.NET WPF IDE开发

WPF中实现类型名着色的Colorize方法

核心实现代码

using ICSharpCode.AvalonEdit.Document;

public static void Colorize(System.Windows.Media.Brush color, TextArea textArea, int line, int column, int length)
{
    if (textArea?.Document == null) return;

    // 转换行/列到文档全局字符偏移量(行/列若为1起始则需减1调整)
    var targetLine = textArea.Document.GetLineByNumber(line);
    int startOffset = targetLine.Offset + column - 1;

    // 创建着色文本段
    var colorSegment = new TextSegment
    {
        StartOffset = startOffset,
        Length = length
    };

    // 应用指定颜色
    colorSegment.TextProperties.SetForegroundBrush(color);

    // 添加到文档的格式化集合生效
    textArea.Document.TextSegments.Add(colorSegment);
}

关键注意事项

  • 索引适配:如果编译器输出的行号/列号是0起始,移除代码中column - 1的调整逻辑
  • 控件依赖:该实现基于AvalonEdit(WPF主流代码编辑器控件),需确保项目引用ICSharpCode.AvalonEdit库
  • 避免重复着色:若同一文本范围可能被多次处理,可先遍历TextSegments移除旧的同范围段,再添加新段
  • 更新着色:当编译结果更新时,可先调用textArea.Document.TextSegments.Clear()清空旧着色,再重新批量添加新的着色标记

内容的提问来源于stack exchange,提问作者Jonas _

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:07:41