我有一个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 files (*.csv)|*csv”表示用户将在筛选器下拉菜单中看到“CSV files (*.csv)”选项,并且该选项将查找与*.csv
匹配的任何文件。
上述代码行中,在“XML”之前的管道符号表示一个全新的筛选器选项,该选项将出现在CSV选项下面。
尽管如此,如果用户输入完整名称,他们也可以选择其他文件类型 - 因此请检查所选文件名并根据需要更正您的代码。
您可以使用Filter
属性,让用户选择特定类型的文件。
但是!这并不是一个保证。用户仍然可以在文件名框中输入“(星号).(星号)”并显示所有文件。因此,您还应该在代码中检查所得到的文件。
您可以使用Path.GetExtension()
方法来实现。
您可以在打开文件对话框中应用筛选器,只显示如上所述的 .xml 和 csv 文件。 使用 path.getextension http://msdn.microsoft.com/en-us/library/system.io.path.getextension.aspx 您可以检查用户是否选择了正确扩展名的文件。如果选择了错误的扩展名,则可以提示选择其他文件。
我强烈建议在上传之前检查文件扩展名。只需在用户选择文件后检查扩展名即可。如果选择了错误的文件,请勿继续上传/处理...