2012-02-10 3 views
7

में चयनित शब्द की सभी घटनाओं को हाइलाइट करें मुझे AvalonEdit में चयनित शब्द की सभी घटनाओं को हाइलाइट करने की आवश्यकता है। मैंने हिहलिंगहटिंगरूल क्लास का एक उदाहरण बनाया: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

* बहुत बहुत धन्यवाद! * –

+0

मुझे नहीं पता कि यह सवाल का जवाब कैसे देता है। उपयोगकर्ता एक ऐसा व्यवहार चाहता था जहां मेल खाने पर सभी शब्दों को टेक्स्ट में हाइलाइट किया जाए। दृश्य स्टूडियो की तरह कुछ ऐसा करता है। – Devid