使用IncludeHeader ClipboardCopyMode的WPF Datagrid COMException

时间:2012-06-01 19:03:02

标签: .net wpf wpfdatagrid clipboard

在我的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相关时如何处理此方案。

1 个答案:

答案 0 :(得分:4)

http://blogs.infragistics.com/forums/t/35379.aspx -

的安德鲁史密斯发现了这个
  

从技术上讲,只有1个进程可以打开剪贴板,如果是另一个进程   进程有它打开后续请求将失败,直到   首先发布剪贴板。这有点在WinForms中处理   剪贴板类,它将重试该集合,并在其间延迟   每次尝试但WPF剪贴板类不执行此操作,如果它失败   第一个显示异常发生。即便如此,我们应该这样做   捕获异常并提出剪贴板操作错误   仍然失败。

同样的事情被解释了,在意大利博客上提到了一些解决方法 -

  

WPF DataGrid Clipboard BUG (?) & Work

     

Google Translation

以下MSDN论坛帖子暗示这可能是机器特定的问题,你能在其他机器上重现吗? -

  

CLIPBRD_E_CANT_OPEN exception when copying to clipboard from a DataGrid

<强>更新

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

WPF DataGrid Clipboard BUG (?) & Work (Cached translation)