我可以使用OpenFileDialog打开硬盘上的所有文件

时间:2013-12-01 13:56:24

标签: c# file methods openfiledialog

我正在学习C和C#,这个问题适用于C#。我有一个应用程序,我想在我的C:\驱动器上打开文件。我可以使用OpenFileDialog打开任何类型的文件吗?这是怎么做到的?

以下是代码:

    case 1:
       openSomething();
       break;


    private static void openSomething()
    {
        OpenFileDialog open = new OpenFileDialog();
        open.Filter = "All Files (*.*)|*.*";
        open.ShowDialog();
        if (open.ShowDialog() == DialogResult.OK)
        {
            File.Open(open.FileName);  // I want to do something like this
        }
    }

在文件程序中是否有类似System.Diagnostics.Process.Start的内容,所以我使用openfiledialog获取文件名,然后我的代码用默认应用程序打开文件?

编辑:我回答了我自己的问题

    private static void openSomething()
    {
        OpenFileDialog open = new OpenFileDialog();
        open.Filter = "All Files (*.*)|*.*";
        if (open.ShowDialog() == DialogResult.OK)
        {
            System.Diagnostics.Process.Start(open.FileName);
        }
    }

2 个答案:

答案 0 :(得分:1)

通常程序会尝试使用Filter属性限制OpenFileDialog列出的文件类型,但是,如果要允许打开任何类型的文件,请在设置此属性(在调用ShowDialog之前)时使用某些内容像这样

open.Filter = "All Files (*.*)|*.*";

意味着您的用户可以选择各种文件。

请记住,Filter属性只是为最终用户提供快速选择的工具,如果您设置了任何专用过滤器,OpenFileDialog本身也可以打开任何类型的文件。
您的用户需要做的就是在文件名文本框空间中键入*.*,他/她可以选择任何类型的文件(当然,只有当他/她具有所需的文件/文件夹访问权限时)

ShowDialog返回DialogResult.OK后,您可以检查Filename属性中是否选择了某些内容,如果要使用与文件扩展名关联的默认应用程序打开文件,则使用Process.Start

if (open.ShowDialog() == DialogResult.OK)
{
   if(open.FileName.Trim() != string.Empty)
   {
         Process.Start(open.FileName);  
   }
}

当然,如果文件选择没有关联的默认程序(例如,如果用户选择了一个DLL?),这可能会有问题,所以也许最好应用过滤器来只选择一个众所周知的文件类型的子集。但这取决于您的要求。

答案 1 :(得分:1)

OpenFileDialog实际上只是一个让用户选择文件或多个文件的窗口。它不会打开任何文件。关闭对话框后,可以从FileNameFileNames属性中检索所选的文件名。打开和读取/编辑文件是一项独立的任务。