Копировать и вставить данные в нескольких форматах в буфер обмена в C#
В этом примере показано, как копировать и вставлять данные в несколько форматов в буфер обмена. Он сохраняет данные в форматах Rich Text (RTF), текста и HTML. Когда вы вставляете данные, он отдельно отображает каждый из доступных форматов.
Следующий код показывает, как программа копирует данные в буфер обмена.
// Копирование данных в буфер обмена в форматах текста, RTF и HTML. private void btnCopy_Click(object sender, EventArgs e) { // Создаем объект DataObject. DataObject data_object = new DataObject(); // Добавить данные в различных форматах. data_object.SetData(DataFormats.Rtf, rchSource.Rtf); data_object.SetData(DataFormats.Text, rchSource.Text); string html_text; html_text = "\r\n"; html_text += " The Quick Brown Fox\r\n"; html_text += " \r\n"; html_text += rchSource.Text + "\r\n"; html_text += " \r\n"; html_text += ""; data_object.SetData(DataFormats.Html, html_text); // Поместите данные в буфер обмена. Clipboard.SetDataObject(data_object); }
Сначала код создает новый DataObject. Он вызывает метод SetData объекта для сохранения данных в RTF и текстовых форматах. Затем он составляет небольшой документ HTML и снова использует метод SetData объекта данных для сохранения документа в формате HTML.
Сначала код создает новый DataObject. Он вызывает метод SetData объекта для сохранения данных в RTF и текстовых форматах. Затем он составляет небольшой документ HTML и снова использует метод SetData объекта данных для сохранения документа в формате HTML.
...
Следующий код показывает, как программа вставляет данные из буфера обмена.
// Вставить данные из буфера обмена в текст, // RTF и HTML, если они доступны. private void btnPaste_Click(object sender, EventArgs e) { // Получить объект DataObject. IDataObject data_object = Clipboard.GetDataObject(); if (data_object.GetDataPresent(DataFormats.Rtf)) { rchRtf.Rtf = data_object.GetData(DataFormats.Rtf).ToString(); txtRtfCode.Text = data_object.GetData(DataFormats.Rtf).ToString(); } else { rchRtf.Clear(); txtRtfCode.Clear(); } if (data_object.GetDataPresent(DataFormats.Text)) { txtText.Text = data_object.GetData(DataFormats.Text).ToString(); } else { txtText.Clear(); } if (data_object.GetDataPresent(DataFormats.Html)) { txtHtml.Text = data_object.GetData(DataFormats.Html).ToString(); } else { txtHtml.Clear(); } }
Для каждого типа данных RTF, текста и HTML, код использует метод GetDataPresent объекта Clipboard, чтобы узнать, доступен ли формат. Если это так, в коде используется метод Clipboard GetData для получения данных.