如何将 属性 设置为 wpf 中 richtextbox 中最后键入的符号?
How do I set a property to the last typed symbol in richtextbox in wpf?
我想将一些背景或前景属性设置为 RichTextBox 中的最新符号。
我尝试通过保存输入前的插入符号位置来获取最新的文本范围,然后像这样获取文本范围:new TextRange(previousCaret, currentCaret)
。
然而,这是一个容易出错的决定,因为如果插入符位置未及时更新(例如,您打字速度非常快并按下按钮同时)
现在,也许我什至不必获取最新符号的 TextRange?还有其他方法吗,比如一些内置方法?
那么,如何正确更改最新符号的属性?
要获取最新的 TextRange,只需使用此代码:
private TextRange LatestSymbol
{
get
{
var previous = InputString.CaretPosition.GetPositionAtOffset(-1);
if (previous != null)
{
return new TextRange(
previous,
InputString.CaretPosition
);
}
return null;
}
}
}
这里的意思是,CaretPosition.GetPositionAtOffset(-1) returns 位于当前位置后面 1 个符号的位置。
这很好用,没有任何错误。
我想将一些背景或前景属性设置为 RichTextBox 中的最新符号。
我尝试通过保存输入前的插入符号位置来获取最新的文本范围,然后像这样获取文本范围:new TextRange(previousCaret, currentCaret)
。
然而,这是一个容易出错的决定,因为如果插入符位置未及时更新(例如,您打字速度非常快并按下按钮同时)
现在,也许我什至不必获取最新符号的 TextRange?还有其他方法吗,比如一些内置方法?
那么,如何正确更改最新符号的属性?
要获取最新的 TextRange,只需使用此代码:
private TextRange LatestSymbol
{
get
{
var previous = InputString.CaretPosition.GetPositionAtOffset(-1);
if (previous != null)
{
return new TextRange(
previous,
InputString.CaretPosition
);
}
return null;
}
}
}
这里的意思是,CaretPosition.GetPositionAtOffset(-1) returns 位于当前位置后面 1 个符号的位置。
这很好用,没有任何错误。