2

WPF データグリッドからセルをコピーできません。同じアプリに他のいくつかのテキスト エディター ウィンドウ (Avalonedit など) があり、そこからクリップボードにコピーできますが、データグリッドからはコピーできません。セルを 1 つでもコピーしようとすると、「クリップボードを開くことができませんでした (HRESULT からの例外: 0x800401D0)」というメッセージが表示されます。

したがって、データグリッド以外のすべてをコピーして貼り付けることができます。私は OpenClipboard と CloseClipboard のアプローチを試みましたが、それもうまくいかなかったようです。

ここで言及されているアプローチを見てきました。(http://blog.somewhatabstract.com/2012/06/27/when-the-clipboard-says-no/)しかし、DataGridから派生して何かをしない限り、OnExecutingCopyメソッドをオーバーライドする方法を見つけることができません.

4

2 に答える 2

1

@サランギ

こんにちは ssarangi...このクリップボードの問題を解決したかどうかはわかりませんが、一部のユーザーが断続的に発生しているクリップボード競合の問題の解決策を見つけようとしているときに、あなたの質問に遭遇しました。私がやっていることは、次の 2 つのアプローチです。

  1. System.Windows.Forms.Clipboard.SetDataObject("string", false, retryTimes, retryDelay)を使用するように切り替えました
  2. 競合しているアプリを見つけるためのロジックを追加しました。

コードスニペットを含めた別の同様の質問に答えたので、まだ支援が必要な場合は、チェックアウトして、それが役立つかどうかを確認してください: OpenClipboard Failed when copy pasteing data from wpf DataGrid

本質的に、GetOpenClipboardWindow() と GetWindowThreadProcessId() に 2 つの DllImport を使用し次にProcess.GetProcesses ( )を介してすべてのアクティブなProcessオブジェクトを取得し、 GetOpenClipboardWindow()からのウィンドウ ハンドルまたはGetWindowThreadProcessId()で取得したProcess.Id (PID)の一致。これは解決策ではありませんが、クリップボードからロックアウトしている原因を特定するのに役立つ場合があります。

私が行っているもう 1 つのことは、 SetDataObject()の再試行ループが組み込まれているSystem.Windows.Forms Clipboard クラスに切り替えることです

于 2014-01-23T15:02:27.863 に答える