将剪贴板内容设置为自定义数据

时间:2017-10-17 09:06:28

标签: c# xml wpf clipboard

我正在将一些XML复制到仅对我的应用程序有意义的Clipboard,我不希望其他应用程序能够粘贴。使用以下行:

Clipboard.SetData(DataFormats.UnicodeText, myXML);

我可以正确复制和粘贴内容,但其他文本编辑器也可以粘贴它。我期待这种情况会有DataFormats.Custom,但没有。

有没有办法将数据发送到仅供我的应用程序使用的剪贴板?

(我假设应用程序在获取剪贴板内容之前检查可用的DataFormats,如果返回的格式不是他们可以处理的内容,则不会获取它们。例如,如果我在复制后使用粘贴命令,则记事本将不执行任何操作图像)

1 个答案:

答案 0 :(得分:2)

Clipboard.SetData期望将简单字符串作为第一个参数,DataFormat不是枚举。所以你可以做到这一点:

Clipboard.SetData("my_custom_format", myXml);

然后您可以使用

检查剪贴板是否包含您的数据
if (Clipboard.ContainsData("my_custom_format")) {
    var xml = Clipboard.GetData("my_custom_format");
}

您将无法将此数据粘贴到记事本等其他编辑器中。