Ответ 1
Ваш код для 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);
}
}
}
Обратите внимание, что будут собраны только файлы в корне папок папок. Если вам нужно получить все файлы в дереве папок, вам потребуется немного рекурсии, чтобы собрать их все.