【问题标题】:How to select text from WPF RichTextBox then replace and color it如何从 WPF RichTextBox 中选择文本然后替换并着色
【发布时间】: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 stackoverflow 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; 并编辑它而不是整个文本。

【问题讨论】:

标签: c# wpf


【解决方案1】:
TextRange tr = new TextRange(rtb.Document.ContentStart,rtb.Document.ContentEnd) 

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

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

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2012-06-06
    相关资源
    最近更新 更多