Я хочу установить некоторые свойства фона или переднего плана для последнего символа в RichTextBox.
Я попытался получить последний текстовый диапазон, сохранив позицию курсора перед вводом, а затем получив такой текстовый диапазон: new TextRange(previousCaret, currentCaret).
Однако это решение подвержено ошибкам, потому что вы можете получить 2 или более последних символов, если позиция курсора не была обновлена вовремя (например, вы печатаете очень быстро и одновременно нажимаете кнопки)
Теперь, может быть, мне даже не нужно получать TextRange последнего символа? Есть ли другие способы, например встроенные методы?
Итак, как правильно изменить свойства последнего символа?
1) да, символ, потому что textrange должен содержать только один символ. 2) последнее что было набрано





Чтобы получить последнюю версию 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 символ отстает от currentPosition.
И это работает хорошо и без каких-либо ошибок.
Что является символом в этом сценарии? Вы имеете в виду
char? И если да, то вы имеете в виду последнийchar, который был напечатан, или последний вText?