public FindAndReplace() { this.InitializeComponent(); rtb.Text = Strings.Find; rtb.ContextMenuOpening += rtb_ContextMenuOpening; rtb.Tapped += rtb_Tapped; _listStart = new List<int>(); _rangeStyles = new C1RangeStyleCollection(); _highlightStyle = new C1TextElementStyle(); _highlightStyle[C1TextElement.BackgroundProperty] = new SolidColorBrush(Colors.Yellow); }
// perform syntax coloring void UpdateSyntaxColoring() { C1TextRange range = c1RichTextBox1.Document.ContentRange; // reset coloring _rangeStyles = new C1RangeStyleCollection(); c1RichTextBox1.StyleOverrides.Clear(); c1RichTextBox1.StyleOverrides.Add(_rangeStyles); var input = range.Text; if (Mode == SyntaxMode.Xaml) { // highlight the matches foreach (Match m in Regex.Matches(input, tagPattern)) { // select whole tag, make it dark blue _rangeStyles.Add(new C1RangeStyle(GetRangeAtTextOffset(range.Start, m), brDarkBlue)); // select tag name, make it dark red var tagName = m.Groups["tagName"]; _rangeStyles.Add(new C1RangeStyle(GetRangeAtTextOffset(range.Start, tagName), brDarkRed)); // select attribute names, make them light red var attGroup = m.Groups["attName"]; if (attGroup != null) { var atts = attGroup.Captures; for (int i = 0; i < atts.Count; i++) { var att = atts[i]; _rangeStyles.Add(new C1RangeStyle(GetRangeAtTextOffset(range.Start, att), brLightRed)); } } } } else if (Mode == SyntaxMode.CSharp) { // highlight reserved words first foreach (string keyword in reservedWords) { foreach (Match m in Regex.Matches(input, keyword + " ")) { // select reserved word, make it blue _rangeStyles.Add(new C1RangeStyle(GetRangeAtTextOffset(range.Start, m), brBlue)); } } // highlight strings foreach (Match m in Regex.Matches(input, stringPattern)) { // select string, make it red _rangeStyles.Add(new C1RangeStyle(GetRangeAtTextOffset(range.Start, m), brDarkRed)); } // highlight comments foreach (Match m in Regex.Matches(input, commentPattern)) { // select comment, make it green _rangeStyles.Add(new C1RangeStyle(GetRangeAtTextOffset(range.Start, m), brGreen)); } } }