着色RichTextBox中的某些单词

时间:2014-04-03 12:21:24

标签: c# colors richtextbox flowdocument words

我尝试更改RichTextBox中某些单词的颜色,最后我发现了一个剪切的代码,它帮助了我很多,但现在我有一个问题。代码只会将第一个" NULL"在我的RichTextBox中。

你能帮我找一个解决方案吗?

感谢您的帮助!

    private void searchWord()
    {
        String search = "NULL";
        TextPointer text = RTBAuftrag.Document.ContentStart;
        while (true)
        {
            TextPointer next = text.GetNextContextPosition(LogicalDirection.Forward);
            if (next == null)
            {
                break;
            }

            TextRange txt = new TextRange(text, next);

            int indx = txt.Text.IndexOf(search);
            if (indx > 0)
            {
                TextPointer sta = text.GetPositionAtOffset(indx);
                TextPointer end = text.GetPositionAtOffset(indx + search.Length);
                TextRange textR = new TextRange(sta, end);
                textR.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.Red));
            }
            text = next;
        }
    }

有人知道可行的方法吗?

1 个答案:

答案 0 :(得分:0)

我将自己回答我的问题! 最后,我为我的问题找到了一个很好的解决方案。

我在code-projekt上找到了一个强大的UserControl http://www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor

我找到解决方案的方法是:

将此添加到我的.xml

xmlns:avalonEdit="http://icsharpcode.net/sharpdevelop/avalonedit"

这个

<avalonEdit:TextEditor  Visibility="Hidden" x:Name="RTBAuftragNEU" Margin="32,413,243,279" KeyDown="RTBKunde_KeyDown" Panel.ZIndex="1" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" > </avalonEdit:TextEditor>

然后把它放到我需要它的班级。

        using (Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsultingControls.highlight.xshd"))
        {
            using (XmlTextReader reader = new XmlTextReader(s))
            {
                RTBAuftragNEU.SyntaxHighlighting = HighlightingLoader.Load(reader, HighlightingManager.Instance);
            }
        }

不要忘记为语法创建XSHD文件,您将在codeproject站点上找到完整的教程。

问候, 弗里多林