c# - WPF 等效于长度为 0 的 Windows 窗体选择
问题描述
我正在 WPF 中重做我的 Windows 窗体应用程序,但在 Windows 窗体的选择和 WPF 的 TextRange 方面遇到了一些问题。在 Windows 窗体中,我曾经在 RichTextBox 上选择长度为 0 以更改特定位置的颜色,这样当有人从那里开始书写时,它具有不同的颜色,而不会更改任何文本的颜色。像这样的东西:
richTextBox.Select(position, 0);
richTextBox.SelectionColor = Color.Blue;
问题是在 WPF 中我找不到任何等价物。如果我使用长度为 0 的 TextRange,它什么也不做。你知道我能做什么吗?谢谢!
解决方案
你可以试试这个方法。这不好,但它的工作。
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);
}
}
推荐阅读
- c# - 我的代码不会将我的 CSV 文件读入我的对象列表
- vue.js - this.$refs.canvas 在 vuejs 中未定义
- r - 如何在使用函数“plot”和“points”的图中添加标签?
- c# - Angular 6/C#/MVC 以 Json Array of Array 的形式从控制器动态返回 JsonResult
- angular - 如何延迟 Angular7 管道可观察到 2 秒后运行
- codeigniter - 为什么我的导航栏没有背景颜色和垂直列表?
- sql - 从字符串转换日期和/或时间.....如何解决此错误
- netsuite - Netsuite 报价表未显示所有子公司
- go - 为什么golang自定义错误变量有多种类型
- excel - 运行时错误 1004 工作表类的粘贴方法失败