【问题标题】:WPF RichTextBox change font color inlineWPF RichTextBox 内联更改字体颜色
【发布时间】:2013-06-15 01:40:47
【问题描述】:

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

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

yourRichTextBox.Foreground = Brushes.Red;

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

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

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

我有一个颜色选择器框,它返回用户希望文本所在的颜色。所以用户以普通黑色字体输入RichTextBox,然后他们会单击颜色选择器按钮,选择一种颜色,点击确定,然后他们输入的下一个内容将是该颜色。有没有办法做到这一点,还是我不走运?

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

【问题讨论】:

标签: c# wpf richtextbox rtf foreground


【解决方案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);
    }

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

【讨论】:

  • 我必须弄清楚第二个字母的东西,但这绝对是我要找的,我什至没有想过要捕获TextChanged 事件。谢谢!
  • PreviewKeyDown 而不是 TextChanged。
【解决方案2】:

我有另一个可能很有趣的解决方案。关键是要使用 RichTextBox 的 Document 属性。

private void Print(string s)
{
    if (s != null)
    {
        var paragraph = new Paragraph();
        paragraph.Inlines.Add(new Bold(new Run($"{DateTime.Now:HH:mm:ss.fff}: ")) { Foreground = Brushes.Green });
        paragraph.Inlines.Add(new Run($"{(s.EndsWith(Environment.NewLine) ? s : s + Environment.NewLine)}"));
        LogView.Document.Blocks.Add(paragraph);
        LogViewScrollViewer.ScrollToEnd();
    }
}

Xaml:

<ScrollViewer x:Name="LogViewScrollViewer">
    <RichTextBox x:Name="LogView" AcceptsReturn="True" IsReadOnly="True">
        <RichTextBox.Resources>
            <Style TargetType="Paragraph">
                <Setter Property="Margin" Value="0" />
            </Style>
        </RichTextBox.Resources>
    </RichTextBox>
</ScrollViewer>

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 2012-07-28
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    相关资源
    最近更新 更多