WPF:RichTextBox选择样式属性被重置

时间:2014-05-25 13:54:35

标签: c# wpf richtextbox selection

我制作了一个简单的文本编辑器(基于RichTextBox),可以加粗/倾斜/更改所选文本的字体大小。这些东西工作得很好 - 例如我可以将Bold和Ital都应用于相同的选择。

我最近添加了" Capitalize"按钮:

private void buttonCapitalize_Click(object sender, RoutedEventArgs e)
{
    if (!textField.Selection.IsEmpty)
    {
        textField.Selection.Text = textField.Selection.Text.ToUpper();
    }
}

a和有点有效。每当我点击它时,所选文本 大写,但其他属性(仅限当前选择),如FontStyle,FontWeight设置为normal,FontSize设置为默认值。

有没有更好的方法来实现这个?

1 个答案:

答案 0 :(得分:1)

我运行了一些测试,从我的结果来看,RichTextBox似乎总是在你选择之前从第一个字符开始采用样式而不是你提到的默认样式

这可能是因为

textField.Selection.Text = textField.Selection.Text.ToUpper();

实际上会创建一个新字符串而不是编辑它(字符串在C#中是不可变的)
如果你想保留你的造型,我猜你将不得不迭代你的选择并按照所选的字符创建它