比较C#中的两个剪贴板IDataObject

时间:2015-04-21 04:03:14

标签: c# winforms clipboard

我正在使用Clipboard events将数据从剪贴板复制到包含Microsoft Word的应用程序。

只要用户在Windows中的任何位置点击副本,它就会将数据粘贴到该单词上。但是如果用户按两次 Ctrl + C ,我不想粘贴相同的数据。 现在this answer建议,我无法使用IsCurrent来比较DataObjects

所以我这样做:

if (Clipboard.GetData(DataFormats.UnicodeText).ToString()!=oldData)
  {
     //Paste and stuffs
     oldData= Clipboard.GetData(DataFormats.UnicodeText).ToString();
  }

但它只有在数据包含一些文本时才有效,如果没有,我会得到空引用错误。 那么有什么方法可以知道DataObject是否包含除文本之外的其他内容(比如Bitmap)并且能够比较它们吗?

1 个答案:

答案 0 :(得分:0)

您可以使用方法ContainsData来检查对象的类型是否存在

  if (Clipboard.ContainsData(System.Windows.Forms.DataFormats.Text))
        {
            //do something
        }

您可以探索适合您需求的格式的DataFormats类