为什么此代码不保留剪贴板?

本·亚伦森
[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应能按预期工作,并以正确的格式添加该数据对象中的所有数据。

埃德蒙·史威普(Edmund Schweppe)

根据MSDNClipboard.SetDataObject方法“清除剪贴板,然后将数据放在剪贴板上,并指定在应用程序退出后是否应保留数据”(强调我的)。

关于何时中的代码SetDataObject实际从Windows剪贴板检索数据的问题,似乎存在一个幕后计时问题如果DataObject通过返回GetDataObject延迟其读取和SetDataObject调用之前的清算代码执行GetDataGetDataObject回报,则剪贴板可以是空的时候SetDataObject试图设置它的数据。

(我首先想到的是清除发生在调用发生之前Clipboard.GetDataObject;但是,正如下面的注释者所述,任何方法调用的参数都在该方法调用发生之前进行评估。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将ListBox复制到剪贴板,不保留返回载体

来自分类Dev

为什么Ubuntu的剪贴板如此受欢迎?

来自分类Dev

为什么Excel VBA中的'Application.Calculation = [value]'语句会擦除剪贴板内存?

来自分类Dev

为什么document.execCommand不会导致剪贴板填充?

来自分类Dev

python,tkinter:文本从剪贴板粘贴两次-为什么?

来自分类Dev

为什么我不能从nano复制到剪贴板?

来自分类Dev

关闭程序后保留剪贴板信息

来自分类Dev

转到剪贴板

来自分类Dev

如何在剪贴板中编辑HTML源代码?

来自分类Dev

如何在剪贴板中编辑HTML源代码?

来自分类Dev

什么是Google Chrome中的剪贴板功能

来自分类Dev

剪贴板中的Unicode字符是什么?

来自分类Dev

X剪贴板之间有什么区别?

来自分类Dev

融合“主要”和“剪贴板”剪贴板

来自分类Dev

为什么Excel vba不一致地复制到剪贴板?

来自分类Dev

为什么不能将缓冲的图像投射到可传输的对象中以将其发送到剪贴板?

来自分类Dev

当我复制剪贴板并将其粘贴时,为什么我的Autohotkey脚本会添加空行?

来自分类Dev

为什么我的应用程序告诉我剪贴板显然是空的,却不是空的?

来自分类Dev

从剪贴板读取文本

来自分类Dev

如何清洁剪贴板?

来自分类Dev

LibGDX HTML剪贴板

来自分类Dev

Applescript“粘贴”剪贴板

来自分类Dev

剪贴板。设置共同

来自分类Dev

Android:剪贴板问题

来自分类Dev

如何使用剪贴板

来自分类Dev

获取剪贴板的价值

来自分类Dev

如何清洁剪贴板?

来自分类Dev

禁用剪贴板格式

来自分类Dev

bash中的剪贴板