У меня странное поведение при выборе в RichTextBox
:
В выделении, где последняя строка выделения полностью выделена, свойство .End
указывает не на последнюю строку строки (абзац) выделения, а на следующий абзац.
Скриншоты поведения:
Выбранный текст
Свойство .Text
показывает правильный контент
Но свойство .End
указывает на следующее paragraph
Я мог бы повторить выборку и сравнить содержимое свойства .Text
с прогонами в абзацах и…. Но есть ли более простой способ получить последний абзац выделения?
Наконец я нашел этот способ получить последнюю строку в выборе. Кажется, работает.
// In my case "this" is the RichTextBox itself, because I work in a derived class from RichTextBox
Paragraph lastLineInSelection = this.Selection.End.Paragraph;
if (this.Selection.End.IsAtLineStartPosition)
{
Block previousBlock = this.Selection.End.Paragraph.PreviousBlock;
while (previousBlock is Paragraph == false && previousBlock != null)
previousBlock = previousBlock.PreviousBlock;
if (previousBlock != null)
lastLineInSelection = (previousBlock as Paragraph);
}