如何从 WPF RichTextBox 中选择文本然后替换并着色

Posted

技术标签:

【中文标题】如何从 WPF RichTextBox 中选择文本然后替换并着色【英文标题】:How to select text from WPF RichTextBox then replace and color it 【发布时间】:2017-08-10 00:58:03 【问题描述】:

我正在尝试让我的 WPF RichTextBox 看起来像一个编码页面。

我标记了一些单词以确定它是关键字还是字符串,...现在我有这样的文字:

<@$keyword>int<keyword$@> sum;

sum = 1;

Console.WriteLine(<@$string>"0"<string$@>,sum);

结果应该是这样的:

int sum;
sum = 1;
Console.WriteLine("0",sum);

但是“int”是蓝色的,“0”是粉红色的。

这是我的 xaml RichTextBox 代码:

<RichTextBox x:Name="richTextBox"
                     VerticalScrollBarVisibility="Auto">
            <FlowDocument>
                <Paragraph>
                    <Run Text="Binding codeContent"/>
                </Paragraph>
            </FlowDocument>
        </RichTextBox>

我的问题参考this *** question 但它似乎没有解决我的问题。

因为我的 WPF RichTextBox 是用 FlowDocument 构建的,所以我们无法通过 String st = myRichtextBox.Text 之类的东西获取内容文本,我们需要使用 TextRange 来获取其中的文本:TextRange tr = new TextRange(rtb.Document.ContentStart,rtb.Document.ContentEnd)

但另一个问题是它获取整个文本,而不是获取我想要的部分内容文本。示例:RichTextBox rtb 包含:&lt;@$keyword&gt;int&lt;keyword$@&gt; sum;sum = 1;Console.WriteLine(&lt;@$string&gt;"0"&lt;string$@&gt;,sum);,我只想获取 &lt;@$keyword&gt;int&lt;keyword$@&gt;&lt;@$string&gt;"0"&lt;string$@&gt; 并编辑它而不是整个文本。

【问题讨论】:

How to select text from the RichTextBox and then color it?的可能重复 是的,这是同一个问题,但技术不同,我使用的是 WPF RichTextBox,它不允许您轻松获取包含文本。我发现我们可以使用 TextRange 来获取所有文本并对其进行编辑。但是我怎样才能得到确切的文本来编辑它呢? ***.com/questions/957441/… 这可以解决问题 @efekctive 这就是如何在其中获取整个文本。但我只想得到一小部分文字。示例:&lt;@$keyword&gt;int&lt;keyword$@&gt; 但不是 &lt;@$keyword&gt;int&lt;keyword$@&gt; sum;sum = 1; Console.WriteLine(&lt;@$string&gt;"0"&lt;string$@&gt;,sum); msdn.microsoft.com/en-us/library/aa970909(v=vs.110).aspx 【参考方案1】:
TextRange tr = new TextRange(rtb.Document.ContentStart,rtb.Document.ContentEnd) 

tr.Text 为您提供内容的纯字符串。现在你有一个字符串可以与下面的正则表达式/子字符串一起使用:

How to select text from the RichTextBox and then color it?

【讨论】:

以上是关于如何从 WPF RichTextBox 中选择文本然后替换并着色的主要内容,如果未能解决你的问题,请参考以下文章

WPF中RichTextBox的定位问题。如何使光标定位到与指定关键字所在的位置?

如何从 RichTextBox 中的光标位置选择前一个字符

WPF RichTextBox 附加彩色文本

已解决如何从(MySQL)表中检索 RichText 内容到 WPF RichTextBox

检测 RichTextBox 中插入符号位置何时更改

WPF RichTextBox滚动条自动滚动实例文本自动滚动实例