2012-06-01 22 views
9

En mi aplicación WPF, estoy usando un control Datagrid; en la definición de control definí la propiedad ClipboardCopyMode como 'IncludeHeader'.WPF Datagrid COMException al usar IncludeHeader ClipboardCopyMode

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

A veces, cuando intento copiar datos desde la red, me encuentro con error de accidente HRESULT portapapeles -

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

Cualquier sugerencia para resolverlo. Miré otras publicaciones, la mayoría trata sobre cómo manejar este escenario cuando explícitamente usa los métodos relacionados con Clipboard pero ninguno relacionado con Datagrid.

+1

tener exactamente el mismo problema con mi aplicación Se agregó un DataGrid, que muestra datos. La aplicación funcionaba bien, hasta que cambié a VS2012 y .net4.5. Después de eso, cuando copio el contenido al portapapeles, la aplicación falla –

+0

La respuesta a [publicación de Arsen] (http://stackoverflow.com/questions/12769264/openclipboard-failed-when-copy-pasting-data-from-wpf -datagrid) en esto me ayudó. – Tod

Respuesta

5

Encontramos este de Andrew Smith en http://blogs.infragistics.com/forums/t/35379.aspx -

Técnicamente sólo el 1 proceso puede abrir el portapapeles de modo que si otro proceso ha que abrió las solicitudes posteriores fallarán hasta que los primeros lanzamientos el portapapeles. Esto se manejó en la clase del Portapapeles WinForms donde reintentaría el conjunto con un retraso entre cada intento, pero la clase del portapapeles WPF no hace esto por lo que si falla en , la primera vez que se produce la excepción. Incluso entonces deberíamos probablemente atrapar la excepción y levantar el error de operación del portapapeles si aún falla.

Lo mismo se explica y algunas maneras de solucionarlo se mencionan en este italiano del blog -

WPF DataGrid Clipboard BUG (?) & Work

Google Translation

Siguiendo hilo del foro de MSDN sugiere que esto podría ser problema específico de la máquina, ¿puedes reproducir esto en otras máquinas? -

CLIPBRD_E_CANT_OPEN exception when copying to clipboard from a DataGrid

Actualización:

enlace del blog parece estar abajo, pero una versión en caché se puede acceder a través de este enlace -

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