我有一个 C# Windows 窗体应用程序,我在其中加载 XML 文件或 CSV 文件以进行某些任务操作。当我单击我拥有的浏览按钮时,会出现一个打开文件对话框,我可以导航到驱动器上的某个位置并选择文件,然后使用上传按钮上传它。
如果我加载 JPG 或 ZIP 文件或任何格式不是 CSV 或 XML 的文件,我的应用程序就会崩溃。有没有办法限制打开文件对话框在 C# 中仅打开 CSV 或 XML 文件?
我有一个 C# Windows 窗体应用程序,我在其中加载 XML 文件或 CSV 文件以进行某些任务操作。当我单击我拥有的浏览按钮时,会出现一个打开文件对话框,我可以导航到驱动器上的某个位置并选择文件,然后使用上传按钮上传它。
如果我加载 JPG 或 ZIP 文件或任何格式不是 CSV 或 XML 的文件,我的应用程序就会崩溃。有没有办法限制打开文件对话框在 C# 中仅打开 CSV 或 XML 文件?
采用
openFileDialog.Filter = "CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml";
这样只显示 csv 文件或 xml 文件。
奇数管道在过滤器下拉列表中可见的内容和相应的实际文件扩展名之间划定,偶数管道在第一个完整文件扩展名和第二个完整文件扩展名之间划定。
例如,“CSV 文件 (*.csv)|*csv”表示用户将在过滤器下拉列表中看到“CSV 文件 (*.csv)”,该选项将查找任何匹配的文件*.csv
。
在上面的代码行中,“XML”之前的管道表示一个全新的过滤器选项,它将出现在 CSV 选项的下方。
尽管如此,如果用户输入完整的名称,他们也可以选择其他文件类型 - 因此请检查选择的文件名并相应地更正您的代码。
您可以使用该Filter
属性让用户选择某种类型的文件。
然而!这不是保证。用户仍然可以在文件名框中输入 '(star).(star)' 并显示所有文件。因此,您还应该检查代码中的结果文件。
您可以使用该Path.GetExtension()
方法执行此操作。
您可以在“打开文件”对话框中应用过滤器,该对话框仅显示 .xml 和 csv 文件,如上所述。使用 path.getextension http://msdn.microsoft.com/en-us/library/system.io.path.getextension.aspx您可以检查用户是否确实选择了具有正确扩展名的文件。如果选择了错误的扩展名,您可以提示选择不同的文件。
我强烈建议在上传之前检查文件扩展名。只需在用户选择文件后检查扩展名。如果选择了错误的文件,请不要继续上传/处理...