0

我必须打开一个文件对话框。我必须选择一个文件,XML 或 MAP 文件。如果选择的文件是 MAP 文件,那么我必须执行步骤 A,或者如果选择的文件是 XML,那么我必须执行步骤 B。我的问题是如何知道从对话框应用程序中选择了哪个文件?

OpenFileDialog fileDialog1 = new OpenFileDialog();
fileDialog1.Filter = "XML Files|*.xml|MAP Files|*.map";
fileDialog1.ShowDialog();

如何知道从上面的过滤器中选择了哪个文件?

打开文件对话框

4

5 回答 5

3

您可以使用:

   string fileName = OpenFileDialog.Filename;

    if(fileName.EndsWith(".xml"))
    {
    //
    }
    else if(fileName.EndsWith(".map"))
    {
     //
    }
于 2012-05-18T10:10:04.703 回答
1

我认为你不能在它打开时这样做。

当用户按下 OK 时OpenFileDialog.Filename,然后传入Path.GetExtension方法或OpenFileDialog.Filename.Endswith(".xml").

检查扩展名是否为 XML,然后执行x步骤,否则执行y步骤。

编辑

请参阅您需要的功能,打开文件对话框中必须有一个事件。

有2OpenFileDialog

  1. System.Windows.Forms
  2. Microsoft.Win32

两者都只有一个OpenFileDialog.FileOK您可以查找的事件。

于 2012-05-18T10:07:09.303 回答
0
        openFileDialog1.FileName = "";
        if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            string filename = openFileDialog1.FileName;

            if (File.Exists(filename))
            {
                //do something here
            }
        }

OpenFileDialogFileName属性是选择的文件名。

于 2012-05-18T10:10:53.417 回答
0

您甚至可以在带有堆叠标签的开关中使用类似的扩展名,并对不受支持的文件类型使用默认大小写:

switch (extension)
{
    case "xml":
    case "xaml":
        Debug.WriteLine("It's an XML!");
        break;
    case "map":
        Debug.WriteLine("It's a map!");
        break;
    default:
        MessageBox.Show("Please select an XML or MAP file");
        // Show the dialog again
        break;
}
于 2012-05-18T10:27:21.300 回答
0

好吧,如果幸运的是所有过滤器都有不同的扩展名,上述答案将起作用。但是如果我们谈论的是具有相同扩展名的不同文件版本,那么我们可以通过以下代码获取选定的过滤器:

SaveFileDialog dlg = new SaveFileDialog();
        dlg.Filter = "Excel 97|*.xls|Excel 95|*.xls";
        if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            //Filer index is 1 based.
            switch (dlg.FilterIndex)
            {
                case 1:
                    //Filter name: Excel 97
                    break;
                case 2:
                    //Filter name: Excel 95
                    break;
            }
        }
于 2021-10-12T11:52:46.943 回答