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 _
相关产品推荐
相关产品推荐

