[STAThread]
static void Main(string[] args)
{
Clipboard.SetDataObject(Clipboard.GetDataObject(), true);
}
这只是我想到的使用DataObject
剪贴板方法的最简单的测试,但是如果从记事本中复制一些文本然后运行该应用程序,则在应用程序退出后我将无法再粘贴该文本。没有抛出异常。使用名为ClipView的应用程序,我可以看到文本已从剪贴板中消失了。
我使用的名称空间是System.Windows.Forms中的名称空间。如您所见,这是一个控制台应用程序,而不是Windows窗体应用程序,因此可能是问题所在。但是,如果是这样,我想了解原因。
编辑
需要明确的是,这只是一个测试,我使用剪贴板的实际目标更加复杂。我意识到,如果我只关心文本,那么我可以使用专门用于文本的方法。
编辑2
尽管方法文档有很多不足之处,但是此Code Project文章和MSDN文章都似乎表明,Clipboard.SetDataObject
使用a进行调用DataObject
应能按预期工作,并以正确的格式添加该数据对象中的所有数据。
根据MSDN,Clipboard.SetDataObject
方法“清除剪贴板,然后将数据放在剪贴板上,并指定在应用程序退出后是否应保留数据”(强调我的)。
关于何时中的代码SetDataObject
实际从Windows剪贴板检索数据的问题,似乎存在一个幕后计时问题。如果DataObject
通过返回GetDataObject
延迟其读取和SetDataObject
调用之前的清算代码执行GetData
的GetDataObject
回报,则剪贴板可以是空的时候SetDataObject
试图设置它的数据。
(我首先想到的是清除发生在调用发生之前Clipboard.GetDataObject
;但是,正如下面的注释者所述,任何方法调用的参数都在该方法调用发生之前进行评估。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句