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

时间:2019-03-04 20:50:44

标签: c# wpf richtextbox textrange

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

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

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

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

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

1 个答案:

答案 0 :(得分: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个符号。

这很好并且没有任何错误。