Title: Copy and paste objects to the clipboard in C#
It's pretty easy to copy and paste objects to the clipboard in C#. The only real trick is to decorate the class that you want to use with the Serializable attribute. That allows the clipboard to serialize and deserialize instances of the class. The following code shows this example's Person class.
[Serializable()]
class Person
{
public string FirstName;
public string LastName;
}
The following code shows how the program copies a Person object to the clipboard.
// Copy a Person to the Clipboard.
private void btnCopy_Click(object sender, EventArgs e)
{
Person person = new Person() {
FirstName = txtFirstName.Text,
LastName = txtLastName.Text
};
Clipboard.SetDataObject(person);
}
This code uses the values in the program's text boxes to create a new Person object. It then simply calls the Clipboard object's SetDataObject method.
The following code shows how the program pastes a Person object from the clipboard.
// Paste the person from the Clipboard.
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();
}
}
First the code uses the GetDataPresent method to see if the clipboard is holding an object of the correct type. Notice that the object's type name includes its namespace.
If there is an object of the right class present, the program uses the Clipboard object's GetData method to get it. The result has the plain Object type, so the code casts it into a Person object.
Download the example to experiment with it and to see additional details.
|