DOBON.NET DOBON.NETプログラミング掲示板過去ログ

リストボックスへのドラッグアンドドロップ

環境/言語:[WinXP/VC#Express2008/.Framework3.5]
分類:[.NET]

2008/07/16(Wed) 12:59:29 編集(投稿者)
2008/07/16(Wed) 12:58:55 編集(投稿者)
2008/07/16(Wed) 12:58:51 編集(投稿者)

リストボックスへファイルのみドラッグアンドドロップできるようなものを作成しているのですが、なぜかフォルダでも受け入れてしまいます。
以下のソースでは間違っているのでしょうか?
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
string[] filename=(string[])e.Data.GetData(DataFormats.FileDrop, false);
listBox1.Items.AddRange(filename);
}

以上です。
回答のほどお願いします。
DataFormats.FileDrop はファイルとフォルダを区別しません。
// ファイルとフォルダをまとめて D&D とかできますよね。

DragEnter のときにフォルダかどうか確認する(フォルダが含まれていればドロップを許可しない)、
Drop のときにファイルかどうか確認する(ファイルだけリストボックスに追加する)、
などしてください。
確認には File.Exists/Directory.Exists などが使えます。
■No22443に返信(Hongliangさんの記事)
> DataFormats.FileDrop はファイルとフォルダを区別しません。
そうだったんですね^^;
とっても助かりました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板