私が知る限り、ドロップがファイルなのかフォルダなのかを判断する方法はありません。
if(fi.Extension == "")は、ディレクトリおよび拡張子のないファイルと一致するため、十分ではありません。
私が見つけた唯一の方法は、.GetFiles()を実行して例外を処理することでした。
もっと良い方法はありますか?
private void ListView0_DragDrop(object sender, DragEventArgs e)
{
// Can only drop files, so check
if (!e.Data.GetDataPresent(DataFormats.FileDrop))
{
return;
}
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
FileInfo fileInfo;
DirectoryInfo dirInfo;
foreach (string str in files)
{
dirInfo = new DirectoryInfo(str);
try
{
foreach(FileInfo fi in dirInfo.GetFiles())
{
Debug.WriteLine("File in dir " + fi.Name);
}
}
catch
{
fileInfo = new FileInfo(str);
Debug.WriteLine("File " + str);
}
}