2012-06-01 34 views
9

在我的WPF應用程序中,我使用的是一個Datagrid控件;在控件定義中,我將ClipboardCopyMode屬性定義爲'IncludeHeader'。WPF Datagrid COMException使用IncludeHeader ClipboardCopyMode

<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

具有完全與我的應用程序相同的問題添加了一個DataGrid,它正在顯示數據。該應用程序工作正常,直到我切換到VS2012和.net4.5。之後,當我將內容複製到剪貼板時,應用程序崩潰 –

+0

[Arsen's post]的答案(http://stackoverflow.com/questions/12769264/openclipboard-failed-when-copy-pasting-data-from-wpf -datagrid)在這幫助了我。 – Tod

回答

5

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)