我正在尝试将复制/粘贴添加到编辑项目的应用程序中。拥有一组选定项目的数据副本,应该能够复制它们或将它们传输到程序的另一个实例。我试过这个:
const string MyClipboardFormat = "MyClipboardFormat"
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
XmlDocument xdoc;
//add data of selected items
Clipboard.SetData(MyClipboardFormat,xdoc);
}
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
XmlDocument xdoc = Clipboard.GetData(MyClipboardFormat) as XmlDocument;
if (xdoc == null)
throw new Exception("Clipboard does not contain MyClipboardFormat");
//read item data from xdoc
}
我已经使用Google搜索,但只发现了使用GetDataObject / SetDataObject的相关内容,相当于看起来正在发生的事情,如果我使用反射器来查看GetData / SetData的作用。
我应该在某处注册剪贴板格式字符串吗?
答案 0 :(得分:2)
我遇到了类似的问题,为了让它工作,我必须在将对象放入剪贴板之前对其进行序列化,并在调用Clipboard.GetData()之后对其进行反序列化。
答案 1 :(得分:1)
您需要注册您的格式。使用DataFormats.GeTFormat(MyClipboardFormat)
:
使用您自己的格式调用此方法 用于创建新剪贴板格式的名称 类型。如果指定的格式没有 存在,这种方法会注册 将其命名为剪贴板格式 Windows注册表并获得一个独特的 格式标识符。