WPF RichTextBox内联更改字体颜色

时间:2013-06-18 17:56:07

标签: c# wpf richtextbox rtf foreground

我已经为这个解决方案搜索了一段时间,所以现在我在这里发帖。

现在我可以更改整个RichTextBox的前景色:

yourRichTextBox.Foreground = Brushes.Red;

我还可以更改用户使用光标选择的某些文本的颜色:

if(!yourRichTextBox.Selection.IsEmpty){
    yourRichTextBox.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red);
}

但我希望能够更改用户键入的下一个文本的颜色。

我有一个颜色选择器框,它返回用户想要文本所在的颜色。因此用户输入普通黑色字体的RichTextBox,然后他们会点击颜色选择器按钮,选择一个颜色,点击OK然后他们输入的下一个东西将是那种颜色。有没有办法做到这一点,还是我运气不好?

我能想到的唯一方法就是有一个缓冲区来捕获用户键入的每个字符,然后在每个键入的字母上设置前景属性,然后将其添加回RichTextBox,想法?

1 个答案:

答案 0 :(得分:1)

您用于选择的相同代码适用于我。例如:

    <RichTextBox x:Name="yourRichTextBox" TextChanged="yourRichTextBox_TextChanged_1">
        <FlowDocument>
            <Paragraph>
                <Run Text="fdsfdfsda"/>
            </Paragraph>
            <Paragraph>
                <Run/>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>

代码背后:

    private void yourRichTextBox_TextChanged_1(object sender, TextChangedEventArgs e)
    {
        yourRichTextBox.Selection.ApplyPropertyValue(RichTextBox.ForegroundProperty, Brushes.Red);
    }

一旦开始输入,第二个字母及之后(第一个触发此更改)将为红色。