在 C# 中比较两个剪贴板 IDataObject
Compare two Clipboard IDataObject in C#
我正在使用 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
)并能够比较它们?
您可以使用方法 ContainsData 来检查对象类型是否存在
if (Clipboard.ContainsData(System.Windows.Forms.DataFormats.Text))
{
//do something
}
您可以探索 DataFormats class 以找到适合您需要的格式
我正在使用 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
)并能够比较它们?
您可以使用方法 ContainsData 来检查对象类型是否存在
if (Clipboard.ContainsData(System.Windows.Forms.DataFormats.Text))
{
//do something
}
您可以探索 DataFormats class 以找到适合您需要的格式