如何知道在c#中打开对话框中选择了哪个文件

时间:2012-05-18 10:05:12

标签: c# wpf

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

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

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

open file dialog

4 个答案:

答案 0 :(得分:2)

您可以使用:

   string fileName = OpenFileDialog.Filename;

    if(fileName.EndsWith(".xml"))
    {
    //
    }
    else if(fileName.EndsWith(".map"))
    {
     //
    }

答案 1 :(得分:1)

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

当用户按“确定”然后以OpenFileDialog.Filename方法或Path.GetExtension传递OpenFileDialog.Filename.Endswith(".xml")

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

修改

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

有2个OpenFileDialog

  1. System.Windows.Forms
  2. Microsoft.Win32
  3. 两者都只有一个您可以查找的事件OpenFileDialog.FileOK

答案 2 :(得分:0)

        openFileDialog1.FileName = "";
        if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            string filename = openFileDialog1.FileName;

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

OpenFileDialog FileName 属性是选定的文件名。

答案 3 :(得分: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;
}