【问题标题】:WPF equivalent to Windows Forms selection of length 0WPF 等效于长度为 0 的 Windows 窗体选择
【发布时间】:2020-05-10 18:51:26
【问题描述】:

我正在 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】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 2010-10-18
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      相关资源
      最近更新 更多