gpt4 book ai didi

c# - 将文件夹从 Windows 资源管理器拖放到 C# 中的列表框

转载 作者:可可西里 更新时间:2023-11-01 08:42:09 24 4
gpt4 key购买 nike

我成功地开发了用于将文件从 Windows 资源管理器拖动到列表框的 C# 代码。

    // Drag and Drop Files to Listbox
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
e.Effect = DragDropEffects.All;
else
e.Effect = DragDropEffects.None;
}

private void listBox1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
foreach (string fileName in files)
{
listBox1.Items.Add(fileName);
}
}

如果我将文件夹拖到列表框,文件夹内的所有文件都将添加到列表框项目。

如果有人能为我提供上述任务的代码片段,那将对我非常有帮助。

提前致谢。

最佳答案

您的 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);
}
}
}

请注意,只会收集掉落文件夹根目录中的文件。如果您需要获取文件夹树中的所有文件,则需要执行一些递归操作以收集所有文件。

关于c# - 将文件夹从 Windows 资源管理器拖放到 C# 中的列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7189779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com