Как скопировать и вставить объекты в буфер обмена в C#
Очень легко скопировать и вставить объекты в буфер обмена на C#. Единственный реальный трюк - украсить класс, который вы хотите использовать с атрибутом Serializable. Это позволяет буферизировать сериализацию и десериализацию экземпляров класса. Следующий код показывает этот пример в классе Person.
[Serializable()]
class Person
{
public string FirstName;
public string LastName;
}
Следующий код показывает, как программа копирует объект Person в буфер обмена.
// Скопировать человека в буфер обмена.
private void btnCopy_Click(object sender, EventArgs e)
{
Person person = new Person() {
FirstName = txtFirstName.Text,
LastName = txtLastName.Text
};
Clipboard.SetDataObject(person);
}
Этот код использует значения в текстовых полях программы для создания нового объекта Person. Затем он просто вызывает метод Clipboard объекта SetDataObject объекта.
Следующий код показывает, как программа вставляет объект Person из буфера обмена.
// Вставьте человека из буфера обмена.
private void btnPaste_Click(object sender, EventArgs e)
{
IDataObject data_object = Clipboard.GetDataObject();
if (data_object.GetDataPresent(
"howto_clipboard_objects.Person"))
{
Person person = (Person)data_object.GetData(
"howto_clipboard_objects.Person");
txtDropFirstName.Text = person.FirstName;
txtDropLastName.Text = person.LastName;
}
else
{
txtDropFirstName.Clear();
txtDropLastName.Clear();
}
}
Сначала код использует метод GetDataPresent, чтобы увидеть, поддерживает ли буфер обмена объект с правильным типом. Обратите внимание, что имя типа объекта включает в себя пространство имен.
