【问题标题】: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);
}
}