在 WPF 中突出显示行/字符
Highlight line(s)/characters in WPF
场景
我目前正在开发一个应用程序。在这个应用程序中,我有一个 TextBox/RichTextBox。我还没有决定控制。在这个控件里面,会有几段文字。
问题
我希望能够使用两个给定的数字突出显示一系列行或该行中的特定字符。最简单的方法是什么?
使用RichTextBox
。您不能使用 TextBox,那是因为 TextBox 只有一种样式应用于所有文本。
使用TextRange.ApplyPropertyValue方法。一个TextRange
是由它的起始位置和结束位置指定的,分别是两个TextPointer
.
像这样
var startingPos = RichTextBox1.ContentStart.GetPositionAtOffset(n1, LogicalDirection.Forward);
var endingPos = startingPos.GetPositionAtOffset(n2 - n1, LogicalDirection.Forward);
var textrange = new TextRange(startingPos, endingPos);
textrange.ApplyPropertyValue(TextElement.BackgroundProperty, Brushes.DarkRed);
您必须仔细计算起始位置和结束位置的偏移量,并将换行符考虑在内。
场景
我目前正在开发一个应用程序。在这个应用程序中,我有一个 TextBox/RichTextBox。我还没有决定控制。在这个控件里面,会有几段文字。
问题 我希望能够使用两个给定的数字突出显示一系列行或该行中的特定字符。最简单的方法是什么?
使用RichTextBox
。您不能使用 TextBox,那是因为 TextBox 只有一种样式应用于所有文本。
使用TextRange.ApplyPropertyValue方法。一个TextRange
是由它的起始位置和结束位置指定的,分别是两个TextPointer
.
像这样
var startingPos = RichTextBox1.ContentStart.GetPositionAtOffset(n1, LogicalDirection.Forward);
var endingPos = startingPos.GetPositionAtOffset(n2 - n1, LogicalDirection.Forward);
var textrange = new TextRange(startingPos, endingPos);
textrange.ApplyPropertyValue(TextElement.BackgroundProperty, Brushes.DarkRed);
您必须仔细计算起始位置和结束位置的偏移量,并将换行符考虑在内。