【问题标题】:Limiting the files that can be selected using Open File Dialog box限制可以使用打开文件对话框选择的文件
【发布时间】:2012-08-19 23:20:11
【问题描述】:

我有一个 C# Windows 窗体应用程序,我在其中加载 XML 文件或 CSV 文件以执行某些任务操作。当我点击浏览按钮时,会出现一个打开文件对话框,我可以导航到驱动器上的某个位置并选择文件,然后使用上传按钮上传。

如果我加载 JPG 或 ZIP 文件或任何格式不是 CSV 或 XML 的文件,我的应用程序就会崩溃。有没有办法限制打开文件对话框在 C# 中只打开 CSV 或 XML 文件?

【问题讨论】:

  • 为什么在上传之前不验证扩展?
  • @FurqanHameedi 这是做到这一点的更好方法。它不仅可以防止用户在对话框窗口中选择错误的文件类型,而且也不会误导用户让他们选择错误的文件类型,从而导致他们在提交时崩溃。

标签: c# .net winforms openfiledialog


【解决方案1】:

使用

openFileDialog.Filter = "CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml";

这样只会显示 csv 文件或 xml 文件。

奇数管道在过滤器下拉列表中的可见内容和相应的实际文件扩展名之间划定界限,偶数管道在第一个完整文件扩展名和第二个完整文件扩展名之间划定。

例如,“CSV 文件 (*.csv)|*csv”表示用户将在过滤器下拉列表中看到“CSV 文件 (*.csv)”,该选项将查找与 *.csv 匹配的任何文件。

在上面的代码行中,“XML”之前的管道表示一个全新的过滤器选项,它将出现在 CSV 选项的下方。

不过,如果用户输入完整名称,他们也可以选择其他文件类型 - 因此请检查选择的文件名并相应地更正您的代码。

【讨论】:

  • 您还可以组合过滤器,以便用户可以同时查看 csv 和 xml 文件,如下所示: openFileDialog.Filter = "Data files |*.csv;*.xml";
【解决方案2】:

您可以使用Filter 属性让用户选择特定类型的文件。

但是!这不是保证。用户仍然可以在文件名框中输入 '(star).(star)' 并显示所有文件。因此,您还应该检查代码中的结果文件。

您可以使用Path.GetExtension() 方法来做到这一点。

【讨论】:

    【解决方案3】:

    您可以在“打开文件”对话框中应用过滤器,该对话框仅显示 .xml 和 csv 文件,如上所述。 使用 path.getextension http://msdn.microsoft.com/en-us/library/system.io.path.getextension.aspx 您可以检查用户是否确实选择了具有正确扩展名的文件。如果选择了错误的扩展名,您可以提示选择不同的文件。

    我强烈建议在上传前检查文件扩展名。只需在用户选择文件后检查扩展名。如果选择了错误的文件,请不要继续上传/处理...

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2012-03-02
      • 2014-01-14
      • 2012-03-22
      • 1970-01-01
      相关资源
      最近更新 更多