Добавить форматированный текст из 2 RichTextbox в другой RichTextBox в C#

У меня есть 3 RichTextBoxes: richTextBox1, richTextBox2 и richTextBox3.

Я запускаю приложение и ввожу текст в текстовые поля 1 и 2.

Таким образом, текст для richTextBox1 - это "Test", а для richTextBox2 - "ing".

Теперь я хочу добавить этот текст вместе и поместить его в другой richTextBox (с сохранением любого форматирования, такого как жирный шрифт, подчеркивание и т. Д.)

Поэтому я пробую следующий код:

richTextBox3.Rtf = richTextBox1.Rtf + richTextBox2.Rtf;

Это не вызывает никаких ошибок, но я получаю только текст из richTextBox1. Итак, я получаю "Тест".

Итак, как мне скопировать содержимое 2 RichTextBoxes, сохраняя формат?

Ta

2 ответа

Решение

Вы хотите сделать это:

richTextBox3.Rtf = richTextBox1.Rtf
richTextBox3.Select(richTextBox3.TextLength, 0);
richTextBox3.SelectedRtf = richTextBox2.Rtf;

Это должно делать свое дело.

Использование:

richTextBox3.Rtf = MergeRtfTexts(new RichTextBox[] { richTextBox1, richTextBox2});

Функция слияния RTF:

    private string MergeRtfTexts(RichTextBox[] SourceRtbBoxes)
    {
        using (RichTextBox temp = new RichTextBox())
        {
            foreach (RichTextBox rtbSource in SourceRtbBoxes)
            {
                rtbSource.SelectAll();
                //move the end
                temp.Select(temp.TextLength, 0);
                //append the rtf
                temp.SelectedRtf = rtbSource.SelectedRtf;
            }
            return temp.Rtf;
        }
    }
Другие вопросы по тегам