【问题标题】:OpenFileDialog auto sort the files orderOpenFileDialog 自动排序文件顺序
【发布时间】:2016-05-23 03:21:34
【问题描述】:

我正在使用 vb.net 开发一个允许用户从 OpenFileDialog 中选择多个文件的应用程序

我现在的问题是,OpenFileDialog 不会按照我选择的顺序读取文件名。

例如,我选择归档的顺序是 - PDF3、PDF1、PDF2

但每次我阅读 OpenFileDialog1.FileNames 中的每个变量时,它都会被分类为 - PDF1 、 PDF2 、 PDF3 。

请帮忙?我对我来说真的很重要..

【问题讨论】:

  • 我认为对话框不允许这样做。它不跟踪用户选择项目的顺序。您也许可以从 OpenFileDialog 继承来创建一个新版本。让我看看我能不能做到。
  • 如果顺序很重要,您也可以让他们单独选择文件。不允许多选。
  • @Michael 感谢您的建议,但是如果用户有很多文件可供选择,那就很麻烦了
  • @MichaelZ.,OpenFielDialog 类声明为NotInheritable。您可能必须创建包含底层 Win32 对话的类。
  • @jmcilhinney 谢谢。我什至没有开始尝试解决方案,也不知道它被标记为不可继承。这节省了我的时间,因为我不会回答那么远。 OP 可以让用户在列表框中进行排序。

标签: vb.net openfiledialog


【解决方案1】:

我认为您可以使用 wndproc 监控消息,是的,有人已经将它放在一起。看看这个CodeProject链接

看起来您将能够处理事件。查看EventFileNameChanged,当用户单击文件时应该会引发它。您可以跟踪点击的文件名,这应该会给您您的订单。

【讨论】:

  • 很好的解决方案。如果第二次选择了文件,您必须跟踪它,因为这会取消选择它。总而言之,这听起来太难了。@Gabriel B S M TreeView 这个想法听起来比使用 OpenFileDialog 更好。
  • 一旦用户单击确定,您将获得所有选定的文件。您可以对照您的跟踪阵列检查它们。如果您取消选择,它无论如何都不会出现在选定的文件中。
【解决方案2】:

OpenFileDialog 并不是真正为它设计的,所以这样使用它会有问题。

我有两个建议:

  1. 不要尝试按照文件被选中的顺序处理文件(不知道你为什么要这样,所以不知道你能不能放弃这个想法)

  2. 使用TreeView 加载文件的名称,因此用户可以通过TreeView 选择文件,这样可以更轻松地跟踪它们被选择的顺序。

https://msdn.microsoft.com/en-us/library/system.windows.forms.treeview(v=vs.110).aspx

【讨论】:

  • 如果您确实必须跟踪订单,我喜欢TreeView 的想法。这也可以让用户在提交之前重新排列。如果使用OpenFileDialog 跟踪它,即使用户的订单出现问题,也必须重新开始。 TreeView 解决了这个问题。
猜你喜欢
  • 2011-11-14
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多