C# 比较C中的两个剪贴板IDataObject#
我正在使用将数据从剪贴板复制到包含Microsoft Word的应用程序 一旦用户在windows中点击copy anywhere,它就会将数据粘贴到word中。但是如果用户按Ctrl+C两次,我不想粘贴相同的数据。 现在,正如建议的那样,我不能使用C# 比较C中的两个剪贴板IDataObject#,c#,winforms,clipboard,C#,Winforms,Clipboard,我正在使用将数据从剪贴板复制到包含Microsoft Word的应用程序 一旦用户在windows中点击copy anywhere,它就会将数据粘贴到word中。但是如果用户按Ctrl+C两次,我不想粘贴相同的数据。 现在,正如建议的那样,我不能使用IsCurrent来比较DataObjects 所以我是这样做的: if (Clipboard.GetData(DataFormats.UnicodeText).ToString()!=oldData) { //Paste and st
IsCurrent
来比较DataObjects
所以我是这样做的:
if (Clipboard.GetData(DataFormats.UnicodeText).ToString()!=oldData)
{
//Paste and stuffs
oldData= Clipboard.GetData(DataFormats.UnicodeText).ToString();
}
但它只有在数据包含一些文本时才起作用,如果不包含,我就会得到空引用错误。
那么,有没有办法知道
数据对象
是否包含文本以外的内容(比如位图
),并能够对它们进行比较?您可以使用方法ContainsData检查对象的类型是否存在
if (Clipboard.ContainsData(System.Windows.Forms.DataFormats.Text))
{
//do something
}
您可以在DataFormats类中浏览适合您需要的格式谢谢。我就是这么想的。这段代码中唯一可能导致空指针错误的是
.ToString()
调用。您只需将Clipboard.GetData(DataFormats.UnicodeText)
预先提取到对象变量中,然后检查它是否为null,您知道。。。这是一般避免空指针的标准方法。