2012-06-01 15 views
9

W mojej aplikacji WPF, używam formantu Datagrid; w definicji sterowania zdefiniowałem własność jako "IncludeHeader".WPF Datagrid COMException za pomocą IncludeHeader ClipboardCopyMode

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

W czasach, gdy próbuję skopiować wszystkie dane z sieci, jestem napotkania błędu katastrofy HRESULT schowka -

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

Wszelkie sugestie, aby go rozwiązać. Przyjrzałem się innym postom, w większości dotyczą one obsługi tego scenariusza, gdy wyraźnie używasz powiązanych metod Clipboard, ale nie są one powiązane z Datagrid.

+1

mającego dokładnie ten sam problem z moją aplikacją. Dodano DataGrid, która wyświetla dane. Aplikacja działała poprawnie, dopóki nie przełączyłem się na VS2012 i .net4.5. Następnie, po skopiowaniu zawartości do schowka, aplikacja ulega awarii –

+0

Odpowiedź na [post Arsena] (http://stackoverflow.com/questions/12769264/openclipboard-failed-when-copy-pasting-data-from-wpf -datagrid) na ten temat pomógł mi. – Tod

Odpowiedz

5

Znaleziony to z Andrew Smitha w http://blogs.infragistics.com/forums/t/35379.aspx -

Technicznie tylko 1 proces może otworzyć schowek więc jeśli inny proces nie otworzył kolejne żądania nie powiedzie się dopóki pierwszych wydań schowka. Było to obsługiwane w klasie schowka WinForms , w której próba była ponawiana z opóźnieniem pomiędzy przy każdej próbie, ale klasa schowka WPF tego nie robi, więc jeśli nie powiedzie się na pierwszym wyświetleniu, wystąpi wyjątek. Nawet wtedy prawdopodobnie powinniśmy wychwycić wyjątek i zwiększyć błąd operacji schowka, jeśli nadal nie powiedzie się .

samo jest wyjaśnione i pewne sposoby, aby to naprawić są wymienione na tej włoskiej blog -

WPF DataGrid Clipboard BUG (?) & Work

Google Translation

następstwie MSDN wątku sugeruje, że może to być problem specyficzny dla maszyny, czy możesz to odtworzyć na innych maszynach? -

CLIPBRD_E_CANT_OPEN exception when copying to clipboard from a DataGrid

Aktualizacja:

Link Blog wydaje się być w dół, ale wersja z pamięci podręcznej można uzyskać za pomocą tego linka -

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