如何在剪切板中添加自己的对象
时间: 2024-03-12 20:45:16 浏览: 25
如前所述,剪切板只支持存储基本数据类型和字符串类型,所以在剪切板中添加自己的对象需要将对象序列化成字符串或二进制数据,然后再存储到剪切板中。以下是一个示例代码,演示了如何将自定义的对象序列化成二进制数据并写入剪切板:
```csharp
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms;
[Serializable]
public class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
}
public static class ClipboardHelper
{
public static void SetObject(object obj)
{
var formatter = new BinaryFormatter();
var stream = new MemoryStream();
formatter.Serialize(stream, obj);
stream.Seek(0, SeekOrigin.Begin);
Clipboard.SetDataObject(stream);
}
public static T GetObject<T>()
{
var obj = default(T);
var data = Clipboard.GetDataObject();
if (data != null && data.GetDataPresent(typeof(MemoryStream)))
{
var stream = (MemoryStream)data.GetData(typeof(MemoryStream));
var formatter = new BinaryFormatter();
obj = (T)formatter.Deserialize(stream);
}
return obj;
}
}
```
在上面的代码中,我们定义了一个名为 `MyObject` 的自定义对象,并且实现了 `Serializable` 接口。然后,我们定义了一个名为 `ClipboardHelper` 的帮助类,并实现了 `SetObject` 和 `GetObject` 两个静态方法。`SetObject` 方法接收一个对象作为参数,将其序列化成二进制数据,然后将数据存储到剪切板中。`GetObject` 方法用于从剪切板中获取存储的二进制数据,并将其反序列化成指定类型的对象。
使用示例:
```csharp
var myObj = new MyObject { Id = 1, Name = "MyObject" };
ClipboardHelper.SetObject(myObj);
var objFromClipboard = ClipboardHelper.GetObject<MyObject>();
Console.WriteLine($"Id: {objFromClipboard.Id}, Name: {objFromClipboard.Name}");
```
在上面的示例中,我们首先创建了一个 `MyObject` 的实例,并将其存储到剪切板中。然后,我们从剪切板中获取存储的对象,并输出对象的属性值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)