Как скопировать содержимое RichTextBox со ссылкой?

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

private void Bttn_copy_Click(object sender, EventArgs e)
    {
        richtxtbx_email.SelectAll();

        Clipboard.Clear();
        Clipboard.SetText(richtxtbx_email.SelectedRtf, TextDataFormat.Rtf);
    }

и попробуйте это:

DataObject dto = new DataObject();
dto.SetText(mesrtf, TextDataFormat.Rtf);
dto.SetText(mes, TextDataFormat.UnicodeText);
Clipboard.Clear();
Clipboard.SetDataObject(dto);

Можете ли вы помочь мне решить эту проблему?


person Revolution    schedule 16.05.2019    source источник


Ответы (2)


Гиперссылки — это всего лишь способ использования гипертекстовых ссылок внутри редактора, который способен отображать их как таковые.

При копировании текста из текстового поля вы можете копировать только сам открытый текст.

Обратите внимание, что RichTextBox.SelectedRtf является свойством строкового типа.

person Avi Meltser    schedule 16.05.2019

RichTextBox не содержит гиперссылку, как это делает HTML.

Он только определяет, выглядит ли определенный текст как ссылку, и автоматически окрашивает его в синий цвет, добавляет подчеркивание и определяет, нажимает ли на него пользователь.

Это происходит, если RichTextBox.DetectUrls задано значение true.

Если вы копируете данные в новый RichTextBox и не видите ссылку, которая была обнаружена в другом RichTextBox, вам просто нужно установить для этого свойства значение true, прежде чем копировать текст.

С другой стороны, если вам нужны настоящие ссылки, чтобы текст — это одно, а ссылка — другое, посмотрите здесь.

person Itamar Kerbel    schedule 16.05.2019