WPF Datagrid COMException on using IncludeHeader ClipboardCopyMode

蓝咒 提交于 2019-12-22 04:06:18

问题


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.


回答1:


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)



来源:https://stackoverflow.com/questions/10855940/wpf-datagrid-comexception-on-using-includeheader-clipboardcopymode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!