Ваш код для DragEnter
все еще применяется к папкам.
В событии DragDrop
вы получаете пути к файлам и пути к папкам одинаковым образом. Если вы перетаскиваете комбинации файлов и папок, все они будут отображаться в вашем массиве files
. Вам просто нужно определить, являются ли пути папками или нет.
Следующий код извлечет все пути всех файлов из корня всех удаленных папок и пути всех файлов.
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
List<string> filepaths = new List<string>();
foreach (var s in (string[])e.Data.GetData(DataFormats.FileDrop, false))
{
if (Directory.Exists(s))
{
//Add files from folder
filepaths.AddRange(Directory.GetFiles(s));
}
else
{
//Add filepath
filepaths.Add(s);
}
}
}
Обратите внимание, что будут собраны только файлы в корне удаленных папок. Если вам нужно получить все файлы в дереве папок, вам потребуется выполнить небольшую рекурсию, чтобы собрать их все.