Код: Выделить всё
1) Скопировать выделенный текст из RichTextBox и вставить его внутрь того же RichTextBox
2) Скопируйте выделенный текст из одного RichTextBox и вставьте в другой RichTextBox в том же приложении.
3)Скопируйте выделенный текст из RichTextBox в буфер обмена как обычный текст, который затем можно вставить в приложения, такие как блокнот и т. д.
Проблема 1:
когда я печатаю обычный текст и пытаюсь скопировать все содержимое в richtextbox, InlineUIContainer не копируется.
Проблема 2:
Когда я хочу выбрать только несколько слов в целом предложении, содержащем смесь прогонов и InlineUIContainer , это одно и то же.
То, что я видел в других ответах на переполнение стека по почти похожим запросам, вы перебираете блоки, но, похоже, это не работает. Как мне вообще скопировать и вставить
Я понимаю, что прямого подхода не существует, и требуется некоторый цикл или работа с текстовыми указателями.
Я попробовал это форматировать себя с помощью CTRL+C
Код: Выделить всё
StringBuilder sb = new StringBuilder();
foreach (Block block in RichTextBox.Document.Blocks)
{
if (block is Paragraph p)
{
foreach (Inline inline in p.Inlines)
{
if (inline is Run run)
{
if (RichTextBox.Selection.Contains(run.ContentStart))
{
sb.Append(run.Text);
}
}
else if (inline is InlineUIContainer iuic)
{
if (RichTextBox.Selection.Contains(iuic.ContentStart))
{
var tb = iuic.Child as TextBlock;
sb.Append(tb.Text);
}
}
}
}
}
например:
Код: Выделить всё
This is example
Подробнее здесь: https://stackoverflow.com/questions/787 ... icontainer