剪贴板 读取 数据
我写了个程序,把一个EMF格式的图片存入了剪贴板中,程序也提示已经存在这种格式的图片在剪贴板中,可是为什么我用GETDATA()读不出来呢
拜托大家了 --------------------编程问答-------------------- 在使用该方法检索数据之前,使用 ContainsData 方法确定剪贴板中是否包含指定格式或兼容格式的数据。
如果此方法无法找到指定格式的数据,则尝试将数据转换成该格式。如果无法将数据转换成指定的格式,或者存储数据时的自动转换设置为 false,则此方法返回空引用(在 Visual Basic 中为 Nothing)。
下面的示例演示此成员。
--------------------编程问答-------------------- 所有基于 Windows 的应用程序都共享系统剪贴板,所以当切换到另一个应用程序时,剪贴板的内容可能会发生变化。
// Demonstrates SetData, ContainsData, and GetData.
public Object SwapClipboardFormattedData(String format, Object data)
{
Object returnObject = null;
if (Clipboard.ContainsData(format))
{
returnObject = Clipboard.GetData(format);
Clipboard.SetData(format, data);
}
return returnObject;
}
对象必须是可序列化的,这样才能放在剪贴板中。如果将不可序列化的对象传递给 Clipboard 方法,该方法将失败,但不会引发异常。有关序列化的更多信息,请参见序列化。如果目标应用程序需要特定的数据格式,则在序列化过程中为数据添加的标头可能会禁止应用程序识别数据。若要保留数据格式,请将数据作为 Byte 数组添加到 MemoryStream 中,然后将 MemoryStream 传递给 SetData 方法。
Clipboard 类只能用于设置为单线程单元 (STA) 模式的线程中。若要使用此类,请确保已使用 STAThreadAttribute 属性标记 Main 方法。
通过剪贴板使用图元文件格式时,可能需要特别注意一些事项。由于 DataObject 类的当前实现中的限制,使用较早的图元文件格式的应用程序可能不会识别由 .NET Framework 使用的图元文件格式。在这种情况下,必须与 Win32 剪贴板应用程序编程接口 (API) 进行交互。有关更多信息,请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中编号为 323530 的文章“Metafiles on Clipboard Are Not Visible to All Applications”(剪贴板上的图元格式并不对于所有应用程序都是可见的)。 --------------------编程问答-------------------- 是不是你这个就是属于“用较早的图元文件格式的应用程序可能不会识别由 .NET Framework 使用的图元文件格式”这种情况?
补充:.NET技术 , VB.NET