Копировать и вставить данные в нескольких форматах в буфер обмена в 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 для получения данных.
