首页 > 解决方案 > WPF 等效于长度为 0 的 Windows 窗体选择

问题描述

我正在 WPF 中重做我的 Windows 窗体应用程序,但在 Windows 窗体的选择和 WPF 的 TextRange 方面遇到了一些问题。在 Windows 窗体中,我曾经在 RichTextBox 上选择长度为 0 以更改特定位置的颜色,这样当有人从那里开始书写时,它具有不同的颜色,而不会更改任何文本的颜色。像这样的东西:

richTextBox.Select(position, 0);
richTextBox.SelectionColor = Color.Blue;

问题是在 WPF 中我找不到任何等价物。如果我使用长度为 0 的 TextRange,它什么也不做。你知道我能做什么吗?谢谢!

标签: c#wpfwinformsselectiontextrange

解决方案


你可以试试这个方法。这不好,但它的工作。

    Brush MyBrush = new SolidColorBrush(Colors.Black);
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MyBrush = new SolidColorBrush(Colors.Red);
        MyRichTextBox.Focus();
    }

    private void MyRichTextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        var textBox = (RichTextBox)sender;
        var docStart = textBox.Document.ContentStart.DocumentStart;
        foreach (var change in e.Changes)
        {

            var changeStart = docStart.GetPositionAtOffset(change.Offset, LogicalDirection.Forward);
            var changeEnd = docStart.GetPositionAtOffset(change.Offset + change.AddedLength, LogicalDirection.Forward);
            var changedRange = new TextRange(changeStart, changeEnd);

            changedRange.ApplyPropertyValue(TextElement.ForegroundProperty, MyBrush);

        }
    }

推荐阅读