gpt4 book ai didi

c# - 从文件夹中拖放文件 c# wpf

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:17 24 4
gpt4 key购买 nike

我试图在我的 WPF 应用程序中使用 ListView,它接受拖放 - 文件和目录,但在目录的情况下,它应该从它们而不是它们本身获取文件。我的 XAML:

<ListView ... AllowDrop="True" Drop="importListView_Drop">
...
</ListView>

我的代码背后:

private void importListView_Drop(object sender, DragEventArgs e)
{
var files = (string[])e.Data.GetData(DataFormats.FileDrop);
core.AddIntoImport(files);
}

这现在产生的输出包括目录和省略其中的文件,f.e.

C:/Example/Files/MyFile.mp3
C:/Example/Files/SubDirectory/
...

虽然我希望它实际上从 SubDirectory 获取所有文件而不包括 SubDirectory 本身。我可以自己做这个:“是目录吗? - 是的:排除它并从中获取所有文件”但问题是,fe中是否包含一些更好的方法?事件参数已经存在了吗?

只是为了让自己更清楚,以下代码在 WinForms 应用程序中完美地完成了工作。 WPF 中有替代方案吗?

private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
InsertImport(files);
}

private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
}

最佳答案

你可以用这个

var allFiles = files.Where(Directory.Exists)
.SelectMany(dir => Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories))
.ToList();

请注意,如果您对子目录没有适当的权限,则会抛出此错误。在这种情况下,您将不得不更多地手动执行此操作,并检查/忽略错误

关于c# - 从文件夹中拖放文件 c# wpf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49668428/

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