WPF等效于Windows窗体选择的长度0

问题描述 投票:0回答:1

我正在WPF中重做Windows窗体应用程序,并且在选择Windows窗体和WPF的TextRange时遇到了一些麻烦。在Windows窗体中,我曾经对RichTextBox进行了长度0的选择,以更改特定位置的颜色,以便当有人在此处开始书写时,它具有不同的颜色,而无需更改任何文本的颜色。像这样的东西:

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

问题是在WPF中我找不到任何等效项。如果我使用长度为0的TextRange,则不会执行任何操作。你知道我能做什么吗?谢谢!

c# wpf winforms selection textrange
1个回答
0
投票

您可以尝试此方法。不好,但是行得通。

    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);

        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.