トップ回答者
【C#】PictureBoxで表示している画像データをデスクトップにドラッグ&ドロップする方法について

質問
回答
すべての返信
-
エラーとはコンパイルエラーか、例外(Exception)なのか、どういったメッセージなのか明らかにしてください。
また、どういったコードを書けば再現するか、示せる範囲で書いてみてください。たとえば、前処理・後処理とか、エラー処理とか考えずに書いたコードだと、特にエラーは出ませんでした。
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { DataObject data = new DataObject(); data.SetData(DataFormats.FileDrop, new string[] { @"C:\temp\test.txt" }); DoDragDrop(data, DragDropEffects.All); }
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。 -
もしかして、アプリケーション内で作成したBitmapオブジェクト(まだディスクに保存されていないメモリ上だけの存在)をファイル保存する目的でdrag & dropしようとしたのでしょうか?
このBitmapオブジェクトをクリップボードに入れ、ペイントに貼りつけるようなことは可能です。しかし、ファイル名などの情報がないため、既存のDataObjectクラスでは、drag & dropでデスクトップ(もしくはExplorerで任意フォルダ)へdropすることはできません。
かなり気合を入れてExplorerにファイル名などを伝える機能を持たせたDataObjectクラスを自作すれば実現可能です。
# 私は250行ぐらいで実現してます。既にディスク上にあるファイルでしたら、Azuleanさんが書かれているように、ファイル名を渡すことでdrag & drop可能です。
-
質問者の方の回答が無いままの議論で恐縮ですが、佐祐理さんの「気合い」「250行」にひっかっかってしまいました。
外池です。
前提として、Imageオブジェクトだけがあって、それがPictureBoxのImageプロパティーに関連付けられているとします。で、ファイルDrop先でのファイル名はアプリ側で勝手に決めて良いとします。
私だったら、まずImageをファイルに適当なファイル名をつけてjpgファイルで保管して、こいつを対象にしてDoDragをしてやるようにすると思うのですが・・・。佐祐理さんのプログラムの場合、前提条件に難しい点があったのでしょうか? もしかすると・・・、Dropの後にファイルに保管する動作にされているのでしょうか?
(ホームページを再開しました)