Копирование текста вместе с его форматированием из RichTextBox
Как скопировать текст в RichTextBox вместе с его форматированием на wordpad или webbrowser?
4 ответов
как копировать текст, вы должны использовать Clipboard.SetText
метод. Это очищает текущее содержимое буфера обмена в Windows и добавляет указанный текст.
скопировать форматированный текст, вам нужно использовать перегрузка этого метода принимает TextDataFormat
У меня была аналогичная ситуация, когда я копировал из своего приложения VB .net и пробовал \r\n, \r, \n, vbCrLf, Chr(13), Chr(10), Chr(13) & Chr(10) и т. д. Новые строки появятся, если я вставлю их в Word или Wordpad, но не в блокнот. Наконец, я использовал ControlChars.NewLine, где я использовал vbCrLf, и это сработало. Итак, подведем итоги: Буфер.SetText ("это одна строка" и ControlChars.Newline & "и этот плохой мальчик-второй.") И это работает правильно. Надеюсь, это сработает ты!
я использовал эти простые обработчики событий (которые используют встроенные методы копирования/ вставки richtextbox), чтобы избежать проверки TextDataFormat:
private void mnuCopy_Click(object sender, EventArgs e)
{
txtRichtext.Copy();
}
private void mnuPaste_Click(object sender, EventArgs e)
{
txtRichtext.Paste();
}
Это лучшее решение (на основе ответ):
var dto = new DataObject();
dto.SetText(richTextBox.SelectedRtf, TextDataFormat.Rtf);
//Since notepad sux and doesn't understand \n,
//we need to fix it replacing by Environment.NewLine (\r\n)
string unformattedText = richTextBox.SelectedText.Replace("\n", Environment.NewLine);
dto.SetText(unformattedText, TextDataFormat.UnicodeText);
Clipboard.Clear();
Clipboard.SetDataObject(dto);