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