Clipboard我的代码是这样的:复制到剪贴板:Clipboard.Clear();DataObjectnewObject=newDataObject(提示);newObject.SetData(myString);剪贴板.SetDataObject(newObject);提示是一个列表集合。复制剪贴板:IDataObjectdataObject=System.Windows.Forms.Clipboard.GetDataObject();如果(dataObject.GetDataPresent(typeof(List))){类型type=typeof(List);对象obj=dataObject.GetData(类型);返回(列表)dataObject.GetData(类型);}GetFormats()显示列表中的格式,GetDataPresent(List)返回true,但是如果我尝试使用GetData(List)从剪贴板类中获取对象,我会返回一个空值。有谁知道可能出了什么问题?好的,我尝试将我的用户类型列表添加到剪贴板并将其取回......这是我尝试过的:我的用户类:publicclassUser{publicintAge{get;放;}公共字符串名称{得到;放;}}其余代码://创建用户列表并添加一些用户Listusers=newList();users.Add(newUser{age=15,name="Peter"});users.Add(newUser{age=14,name="John"});//假设它是我的数据格式stringformat="MyUserList";剪贴板。清除();//将数据设置到剪贴板Clipboard.SetData(格式,用户);//从剪贴板中获取数据Listresult=null;如果(Clipboard.ContainsData(格式))结果=(列表)Clipboard.GetData(格式);...结果为空?...直到我将用户类标记为可序列化[Serializable]publicclassAfterUser{//...}我的代码有效。嗯,这不是答案,但也许它可以帮助你。@Reniuz感谢您的帮助,它帮助我找到了答案。为了从剪贴板中获取多种格式的文本和自定义对象数据,我在自己的类中实现了IDataObject接口。设置数据对象的代码必须设置复制标志,如下所示:Clipboard.Clear();Clipboard.SetDataObject(myClassThatImplementsIDataObject,true);要再次获取数据,可以使用以下方法检索标准文本:Clipboard.GetText();数据可以使用方法来检索数据:Clipboard.GetData("nameofmyclass");另一个有用的点是测试我是否可以通过使用BinaryFormatter类序列化我放入剪贴板的对象来进行此测试...如果抛出异常,复制到剪贴板也会失败,但不会提示。所以我的班级有:[Serializable]publicclassClipboardPromptsHolder:IDataObject{...}我有一个类似的场景,在将我的班级标记为可序列化后,我让它开始工作。因此,尝试将Serializable属性放在类Data.Sources.PromptResult上。以上就是C#学习教程的全部内容:copyingobjectsfromtheclipboard和copyobjectsfromit。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
