WPF Datagrid COMException on using IncludeHeader ClipboardCopyMode

9

In my WPF app, I am using a Datagrid control; in the control definition I defined ClipboardCopyMode property as 'IncludeHeader'.

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

At times, when I try to copy any data from grid, I am encountering HRESULT clipboard crash error -

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

Any suggestions to resolve it. I looked at other posts, mostly they are about how to handle this scenario when you explicitly use the Clipboard related methods but none related to Datagrid.

.net
wpf
wpfdatagrid
clipboard
asked on Stack Overflow Jun 1, 2012 by Mahender • edited Jul 13, 2012 by akjoshi

1 Answer

4

Found this from Andrew Smith at http://blogs.infragistics.com/forums/t/35379.aspx -

Technically only 1 process can open the clipboard so if another process has it opened the subsequent requests will fail until the first releases the clipboard. This was sort of handled in the WinForms Clipboard class where it would retry the set with a delay in between each try but the WPF clipboard class doesn't do this so if it fails on the first show the exception occurs. Even then we should probably catch the exception and raise the clipboard operation error if it still fails.

Same thing is explained and some ways to fix it are mentioned on this italian blog -

WPF DataGrid Clipboard BUG (?) & Work

Google Translation

Following MSDN forum thread suggests that this could be machine specific problem, can you reproduce this on other machines? -

CLIPBRD_E_CANT_OPEN exception when copying to clipboard from a DataGrid

Update:

Blog link seems to be down but a cached version can be accessed through this link -

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

answered on Stack Overflow Jun 5, 2012 by akjoshi • edited Feb 14, 2014 by akjoshi

User contributions licensed under CC BY-SA 3.0