Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用“打开文件”对话框限制可以选择的文件_C#_.net_Winforms_Openfiledialog - Fatal编程技术网

C# 使用“打开文件”对话框限制可以选择的文件

C# 使用“打开文件”对话框限制可以选择的文件,c#,.net,winforms,openfiledialog,C#,.net,Winforms,Openfiledialog,我有一个C Windows窗体应用程序,在其中加载XML文件或CSV文件以执行某些任务操作。单击“浏览”按钮时,会出现“打开文件”对话框,我可以导航到驱动器上的某个位置并选择该文件,然后使用“上载”按钮上载该文件 如果我加载了JPG或ZIP文件,或者任何格式不是CSV或XML的文件,我的应用程序就会崩溃。有没有办法将“打开文件”对话框限制为仅在C中打开CSV或XML文件?使用 openFileDialog.Filter = "CSV files (*.csv)|*.csv|XML fi

我有一个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选项下面

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

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

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


您可以使用该方法执行此操作。

您可以在“打开文件”对话框中应用过滤器,该对话框仅显示上述.xml和csv文件。 使用path.getextension,您可以检查用户是否确实选择了具有正确扩展名的文件。如果选择了错误的扩展名,则可以提示选择其他文件


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

为什么不在上载之前验证扩展名?@FurqanHameedi这是更好的方法。它不仅可以防止用户在对话框窗口中选择错误的文件类型,而且也不会误导用户,让他们选择错误的文件类型是可以的,只会在提交时崩溃。您还可以组合过滤器,以便用户可以同时查看csv和xml文件,如下所示:openFileDialog.Filter=数据文件|*.csv;*。xml;