■86153 / inTopicNo.6) |
Re[2]: C# WPFで、エクスプローラへドラッグ&ドロップ |
□投稿者/ きみのぶ (30回)-(2017/12/21(Thu) 19:46:15)
|
■No86147 (ぶなっぷ さん) に返信
ぶなっぷ 様
アドバイスありがとうございます。
> 2017/12/21(Thu) 15:59:50 編集(投稿者)
>
> やったことないので、たぶんで回答します。
>
> ドラッグ&ドロップはドロップ側のアプリが認識できるデータでない限り、ドロップできないはず。
>
> 今回、ドロップ先はエクスプローラですので、エクスプローラがドロップ対象として認識できるのは、ファイルです。
> なので、ListViewからドラッグを開始する際、ビットマップファイルとして開始する必要があるのではないでしょうか?
>
> というわけで、ドラッグ&ドロップ対象のビットマップをいったんTempフォルダあたりに保存します。
> その後、Tempフォルダに保存したビットマップファイルをドロップしたフォルダにMoveする方法を思いつきます。
以下のコードを試してみました。
Icon icon = this.GetSelectedIcon();
// Tempフォルダへアイコンを一時保存
String iconPath = System.IO.Path.GetTempPath() + "新しいアイコン.ico";
using (FileStream fileStream = new FileStream(iconPath, FileMode.Create, FileAccess.Write))
{
try
{
icon.Save(fileStream);
fileStream.Close();
}
catch(Exception exception)
{
System.Windows.MessageBox.Show(exception.Message, "アイコンの一時保存失敗");
return;
}
}
// 保存したアイコンを移動
System.Windows.DataObject dataObject = new System.Windows.DataObject();
dataObject.SetData(System.Windows.DataFormats.FileDrop, iconPath);
DragDrop.DoDragDrop(this, dataObject, System.Windows.DragDropEffects.Move);
すると、Tempフォルダには"新しいアイコン.ico"が保存されるのですが、エクスプローラのドラッグ先には移動出来ません。
DragDropEffects.Copyも試してみましたが、コピーされません。
何がいけないのでしょうか?
出来ましたら、アドバイスをお願い致します。
>
> ドラッグの開始方法は以下のような感じ。
> https://msdn.microsoft.com/ja-jp/library/hh144799(v=vs.110).aspx
> ただし、ファイルのドラッグ開始は、DataObjectを
> data.SetData(DataFormats.FileDrop, <ファイルパス>);
> する必要があると思います。
>
|
|