9

私の WPF アプリでは、Datagridコントロールを使用しています。コントロール定義で、ClipboardCopyModeプロパティを「IncludeHeader」として定義しました。

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

グリッドからデータをコピーしようとすると、HRESULTクリップボードのクラッシュ エラーが発生することがあります -

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

それを解決するための提案。Clipboard私は他の投稿を見ましたが、ほとんどの場合、関連するメソッドを明示的に使用するが、関連するものがない場合にこのシナリオを処理する方法についてDatagridです。

4

1 に答える 1

4

http://blogs.infragistics.com/forums/t/35379.aspxで Andrew Smith からこれを見つけました-

技術的には、1 つのプロセスのみがクリップボードを開くことができるため、別のプロセスが開いている場合、最初のプロセスがクリップボードを解放するまで後続のリクエストは失敗します。これは WinForms Clipboard クラスで処理され、各試行の間に遅延を設けてセットを再試行しますが、WPF クリップボード クラスはこれを行わないため、最初のショーで失敗すると例外が発生します。それでも失敗する場合は、おそらく例外をキャッチし、クリップボード操作エラーを発生させる必要があります。

同じことが説明され、それを修正するいくつかの方法がこのイタリアのブログに記載されています-

WPF DataGrid クリップボードのバグ (?) & 作業

Google翻訳

次の MSDN フォーラム スレッドは、これがマシン固有の問題である可能性があることを示唆しています。他のマシンでこれを再現できますか? -

DataGrid からクリップボードにコピーするときの CLIPBRD_E_CANT_OPEN 例外

アップデート:

ブログのリンクがダウンしているようですが、このリンクからキャッシュされたバージョンにアクセスできます -

WPF DataGrid クリップボードのバグ (?) & 仕事 (キャッシュされた翻訳)

于 2012-06-05T07:45:43.327 に答える