如何在wpf中的richtextbox中将属性设置为最后一个键入的符号?

问题描述 投票:0回答:1

我想将一些背景或前景属性设置为RichTextBox中的最新符号。

我尝试通过在输入之前保存插入符号位置来获取最新的文本范围,然后得到像这样的文本范围:new TextRange(previousCaret, currentCaret)

然而,这是一个容易出错的决定,因为如果插入符号位置没有及时更新(例如,您输入速度很快并且同时按下按钮),您实际上可以获得2个或更多个最后符号

现在,也许我甚至不需要获得最新的符号TextRange?还有其他方法,比如一些内置方法吗?

那么,如何正确更改最新符号的属性?

c# wpf richtextbox textrange
1个回答
0
投票

要获取最新的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)返回currentPosition后面1个符号的位置。

这很好用,没有任何错误。

© www.soinside.com 2019 - 2024. All rights reserved.