gpt4 book ai didi

c# - 剪贴板 将对象复制到和从中复制

转载 作者:可可西里 更新时间:2023-11-01 08:37:19 25 4
gpt4 key购买 nike

我正在尝试将一个对象复制到 Windows 剪贴板上,然后再次关闭。我的代码是这样的:

复制到剪贴板:

Clipboard.Clear();
DataObject newObject = new DataObject(prompts);
newObject.SetData(myString);
Clipboard.SetDataObject(newObject);

在哪里promptsList<Data.Sources.PromptResult>收藏。

复制剪贴板:

IDataObject dataObject = System.Windows.Forms.Clipboard.GetDataObject();
if (dataObject.GetDataPresent(typeof(List<Data.Sources.PromptResult>)))
{
Type type = typeof(List<Data.Sources.PromptResult>);
Object obj = dataObject.GetData(type);
return (List<Data.Sources.PromptResult>)dataObject.GetData(type);
}

GetFormats()显示列表中的格式和 GetDataPresent(List<Data.Sources.PromptResult>)返回 true 但如果我尝试从 Clipboard 中获取对象用GetData(List<Data.Sources.PromptResult>)上课我得到 null 的返回。

有谁知道哪里出了问题?

最佳答案

好的,我尝试将我的用户类型列表添加到剪贴板并将其取回...这是我尝试过的:

我的用户类:

public class User
{
public int Age { get; set; }
public string Name { get; set; }
}

其余代码:

// Create User list and add some users
List<User> users = new List<User>();
users.Add(new User { age = 15, name = "Peter" });
users.Add(new User { age = 14, name = "John" });

// Lets say its my data format
string format = "MyUserList";
Clipboard.Clear();

// Set data to clipboard
Clipboard.SetData(format, users);

// Get data from clipboard
List<User> result = null;
if (Clipboard.ContainsData(format))
result = (List<User>)Clipboard.GetData(format);

...结果为 null :)...直到我将 User 类标记为 Serializable

[Serializable]
public class User
{
//...
}

之后我的代码就可以工作了。好的,这不是答案,但也许它可以帮助您。

关于c# - 剪贴板 将对象复制到和从中复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9032673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com