(.Net)エクスプローラからのファイルドラッグを受け入れる
.Net のコントロールエクスプローラからのファイルのドラッグアンドドロップを受け入れ、ファイルのパスを取得するための方法です。
MS:Visual C# アプリケーションにファイルのドラッグ アンド ドロップ機能を提供する方法に書いてる内容そのままですが、参考までに。。。
ソースは下記のようになります。
////// DragEnterイベントハンドラ ドラッグされたデータがコントロール内入ったとき。
///
///
///
private void lblDrag_DragEnter(object sender, DragEventArgs e)
{
//ドラッグのデータがファイルなら、エフェクトを表示する
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
else
{
//Noneだとドラッグデータを受け入れない
e.Effect = DragDropEffects.None;
}
}
///
/// DragDropイベントハンドラ ドロップされた時
///
///
///
private void lblDrag_DragDrop(object sender, DragEventArgs e){
//ファイルパス取得
string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false);
MessageBox.Show(s[0]);
}
まず、ドラッグを受け入れる .Net のコントロールの AllowDrop プロパティを True にします。
次に、ドラッグを受け入れるコントロールの DragEnter イベントハンドラを実装し、ドラッグされたDataがファイルならマウスカーソルのエフェクトを変更します。
そして、ドラッグを受け入れるコントロールの DragDrop イベントハンドラを実装し、ファイルパスを取得します。
DragDrop イベントハンドラの DragEventArgs にドロップされたデータが入るので、そこから Data.GetData メソッドを使ってパスを取得します。