C# 将文件拖放到wpf/C应用程序时,如何在Windows资源管理器中维护文件顺序?

C# 将文件拖放到wpf/C应用程序时,如何在Windows资源管理器中维护文件顺序?,c#,.net,wpf,c#-3.0,drag-and-drop,C#,.net,Wpf,C# 3.0,Drag And Drop,在我的应用程序中,用户可以将文件从windows资源管理器拖放到我的应用程序中的列表框中。这一切都非常有效。但是,当拖动多个文件时,根据用户在windows资源管理器中单击哪个文件开始拖动,调用时传递的文件顺序会有所不同: e.Data.GetData(DataFormats.FileDrop) 如何接收与在windows资源管理器中显示的顺序相同的文件 谢谢你的帮助 您收到它们的顺序就是选择它们的顺序。我以前遇到过一次这个问题,据我所知,您无法按Explorer的排序顺序获取它们 因此,您的

在我的应用程序中,用户可以将文件从windows资源管理器拖放到我的应用程序中的列表框中。这一切都非常有效。但是,当拖动多个文件时,根据用户在windows资源管理器中单击哪个文件开始拖动,调用时传递的文件顺序会有所不同:

e.Data.GetData(DataFormats.FileDrop)
如何接收与在windows资源管理器中显示的顺序相同的文件


谢谢你的帮助

您收到它们的顺序就是选择它们的顺序。我以前遇到过一次这个问题,据我所知,您无法按Explorer的排序顺序获取它们


因此,您的代码应该假定用户按该顺序选择它们是有原因的。

如果您将一组文件从0000移到0010,然后将它们拖动到应用程序中,例如视频文件,并将它们拖动到VLC中。 资源管理器不会按照您选择的项目顺序,而是从您单击鼠标左键并从中拖动的项目中为列表提供数据

单击0000,它们将按数字顺序显示。 单击0003,它们将从0003显示到0010,然后是0001和0002


因此,拖动n drop的正确方法是始终从顶部拖动。

感谢您的回复。我发现情况正好相反,用户希望文件在从windows资源管理器拖动时按其显示顺序排列。我同情这些用户,这就是我找到解决方案的原因。但是,Windows必须假定用户出于某种原因按给定顺序选择它们,因此您也应该这样做。这不是很好,但这是Windows不想为你思考的领域之一,微软在其他领域也经常被抨击。这很公平。谢谢你的帮助。我的解决方案是提供修改键,打开最常见的排序名称、日期和类型。但我不相信我的用户曾经在生产中使用过这些工具。这听起来像是观察到的行为,而不是浏览器根据合同所做的事情。如果是这种情况,您至少应该对代码进行注释,以防将来版本的Explorer或以前版本的Explorer更改了行为并破坏了代码的假设。我意识到有时需要依赖“当前行为”,但请确保您理解这一点,并至少考虑过该行为变化的后果。并准备好让你的应用程序成为未来新老文章的匿名主题。有人知道这种反直觉的逻辑从何而来吗?是否有一个有益的原因,或者只是一个奇怪的怪癖,从来没有人费心去解决?