我正在WPF中重做Windows Forms应用程序,但是在选择Windows Forms和WPF的TextRange时遇到了一些麻烦。 在Windows窗体中,我曾经在RichTextBox上进行了长度0的选择,以更改特定位置的颜色,以便当有人在此处开始书写时,它具有不同的颜色,而无需更改任何文本的颜色。像这样:
richTextBox.Select(position, 0);
richTextBox.SelectionColor = Color.Blue;
问题是在WPF中我找不到任何等效项。如果我使用长度为0的TextRange,则不会执行任何操作。你知道我能做什么吗?谢谢!
答案 0 :(得分: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);
}
}