Как установить свойство для последнего набранного символа в richtextbox в wpf? - PullRequest
0 голосов
/ 04 марта 2019

Я хочу установить для некоторых свойств фона или переднего плана последний символ в RichTextBox.

Я попытался получить последний текстовый диапазон, сохранив позицию каретки перед вводом и затем получив текстовый диапазон следующим образом: new TextRange(previousCaret, currentCaret),

Однако это подверженное ошибкам решение, поскольку вы можете получить 2 или более последних символа в случае, если позиция каретки не была обновлена ​​вовремя (например, вы печатаете очень быстро и нажимаете кнопкив то же время)

Теперь, может быть, мне даже не нужно получать TextRange последнего символа?Существуют ли другие способы, например, некоторые встроенные методы?

Итак, как правильно изменить свойства последнего символа?

1 Ответ

0 голосов
/ 05 марта 2019

Чтобы получить последний 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) возвращает позицию, которая на 1 символ позади текущей позиции.

И это работает хорошо и без ошибок.

...