【问题标题】:c# openfiledialog to select multiple files with same order as user selectsc# openfiledialog 以与用户选择的顺序相同的顺序选择多个文件
【发布时间】:2023-03-23 08:49:01
【问题描述】:

在我的 c# windows 应用程序中,我喜欢以相同的顺序获取多个文件,因为用户在 openfiledialog 窗口中选择文件。我得到了所有选定的文件,但它的顺序不正确。任何人都可以帮我解决这个问题。

【问题讨论】:

  • 您应该创建自己的对话框
  • 什么样的订单?用你自己的方法openFileDialog.FileNames排序,可能更简单。
  • 如果用户选择第一个文件,它应该在索引 [0] 上,然后如果用户选择第二个文件,它应该在索引 [1] 上 ...依此类推。将 openFileDialog.FileNames 分配给字符串数组时,应满足上述顺序。
  • @dotctor 你能建议我任何链接或给我一个代码来创建符合我的约束的自己的对话框

标签: c# .net c#-3.0 openfiledialog filedialog


【解决方案1】:

如果您查看底层控件接口OPENFILENAME 的文档,您会看到以下评论:

如果用户选择了多个文件,lpstrFile 缓冲区会返回当前目录的路径,后跟所选文件的文件名。

而且,除了用于不同场景的分隔符上的一些 cmets 之外,如果没有足够的缓冲区该怎么办,以及有关旧版 8.3 支持的一些细节,仅此而已。换句话说,OpenFileDialog 不提供任何机制来冒泡排序信息,因为底层的 Windows 通用对话框不提供通过标准接口获取此信息。

如果您必须保留它,则需要创建自己的表单或对话框来按顺序跟踪选择,老实说,您最好提供一个稍微不同的 UI,允许用户在文件之后重新排序文件'已经选择了它们,类似于在某些移动设备上重新排序列表的方式。

【讨论】:

  • 如果我们能够知道操作系统如何实际填充所选文件列表,那么拥有一些文档或来源来确认该声明会更加有用。我的意思是,绝对不能使用 Random() 创建列表,对吗?大声笑
  • 链接到证明这一点具有挑战性,因为 .NET 控件或底层 Win32 API 的底层文档对返回的订单没有评论,这表明虽然可能有订单,但它在实施的心血来潮,并且可能随着时间的推移而变化。换句话说,它是无证行为。也就是说,我添加了指向文档的链接,以及有关缺失保证的一些详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 2012-04-29
  • 2019-04-10
  • 1970-01-01
  • 2014-03-06
相关资源
最近更新 更多