9

在我的 WPF 应用程序中,我使用了一个Datagrid控件;在控件定义中,我将ClipboardCopyMode属性定义为“IncludeHeader”。

<DataGrid Name="datagrid"  ClipboardCopyMode="IncludeHeader">
</DataGrid>

有时,当我尝试从网格复制任何数据时,我遇到HRESULT剪贴板崩溃错误 -

System.Runtime.InteropServices.COMException (0x800401D0): 
OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))

任何解决它的建议。我查看了其他帖子,主要是关于当您明确使用Clipboard相关方法但与Datagrid.

4

1 回答 1

4

在http://blogs.infragistics.com/forums/t/35379.aspx从 Andrew Smith 那里找到这个-

从技术上讲,只有一个进程可以打开剪贴板,因此如果另一个进程打开了它,则后续请求将失败,直到第一个释放剪贴板。这是在 WinForms Clipboard 类中处理的,它会在每次尝试之间延迟重试集合,但 WPF 剪贴板类不会这样做,因此如果它在第一次显示时失败,则会发生异常。即使这样,我们也应该捕获异常并在它仍然失败时引发剪贴板操作错误。

解释了同样的事情,并在这个意大利博客上提到了一些修复它的方法 -

WPF DataGrid 剪贴板 BUG (?) & 工作

谷歌翻译

以下 MSDN 论坛帖子建议这可能是特定于机器的问题,您可以在其他机器上重现此问题吗?-

从 DataGrid 复制到剪贴板时出现 CLIPBRD_E_CANT_OPEN 异常

更新:

博客链接似乎已关闭,但可以通过此链接访问缓存版本 -

WPF DataGrid 剪贴板 BUG (?) & 工作(缓存翻译)

于 2012-06-05T07:45:43.327 回答