c# - 在 AvalonEdit 中突出显示所有出现的选定单词

标签 c# wpf highlighting textedit avalonedit

我需要在 AvalonEdit 中突出显示所有出现的选定单词。我创建了一个 HihglinghtingRule 类的实例:

 var rule = new HighlightingRule()
   {
       Regex = regex, //some regex for finding occurences
       Color = new HighlightingColor {Background = new SimpleHighlightingBrush(Colors.Red)}
   };

之后我应该做什么? 谢谢。

最佳答案

要使用该 HighlightingRule,您必须创建另一个突出显示引擎实例(HighlightingColorizer 等)

编写突出显示您的文字的 DocumentColorizingTransformer 会更容易、更高效:

public class ColorizeAvalonEdit : DocumentColorizingTransformer
{
    protected override void ColorizeLine(DocumentLine line)
    {
        int lineStartOffset = line.Offset;
        string text = CurrentContext.Document.GetText(line);
        int start = 0;
        int index;
        while ((index = text.IndexOf("AvalonEdit", start)) >= 0) {
            base.ChangeLinePart(
                lineStartOffset + index, // startOffset
                lineStartOffset + index + 10, // endOffset
                (VisualLineElement element) => {
                    // This lambda gets called once for every VisualLineElement
                    // between the specified offsets.
                    Typeface tf = element.TextRunProperties.Typeface;
                    // Replace the typeface with a modified version of
                    // the same typeface
                    element.TextRunProperties.SetTypeface(new Typeface(
                        tf.FontFamily,
                        FontStyles.Italic,
                        FontWeights.Bold,
                        tf.Stretch
                    ));
                });
            start = index + 1; // search for next occurrence
        }
    }
}

关于c# - 在 AvalonEdit 中突出显示所有出现的选定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9223674/

相关文章:

wpf - 如何将 POCO 对象绑定(bind)到 WPF GUI?

vim - 当 Vim/Neovim 高亮显示与文本相同的颜色时无法阅读

elasticsearch - Elasticsearch荧光笔误报

c# - 从数据库生成 POCO/DTO 的工具 (SQL Server)

c# - 寻找一个 msbuild 和 xbuild 任务来获取引用的库(没有 nuget.exe)

c# - System.Threading.Timer导致其他计时器落后

WPF 数据网格验证不一致

c# - 为什么我无法将名称值分配给 WPF 中范围为“内部”的 UserControl?

delphi - Delphi 工具按钮(TToolbutton)的剥离效果

c# - 代码首先有两个对象有其他对象