2012-02-10 122 views
7

我需要突出顯示AvalonEdit中選定單詞的所有匹配項。我創建HihglinghtingRule類的一個實例:突出顯示在AvalonEdit中選定單詞的所有匹配項

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

我應該後做什麼? 謝謝。

回答

7

要使用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 
     } 
    } 
} 
+0

*非常感謝!* – 2012-02-15 07:37:04

+0

我不明白這是如何回答這個問題的。用戶想要一種行爲,即所有單詞如果匹配,都會在文本中突出顯示。類似於視覺工作室的東西。 – Devid 2017-04-13 19:28:02

相關問題