【问题标题】:Can I use a OpenFileDialog to open all files on my harddrive我可以使用 OpenFileDialog 打开硬盘上的所有文件吗
【发布时间】:2013-12-01 13:56:24
【问题描述】:

我正在学习 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);
        }
    }

【问题讨论】:

    标签: c# file methods openfiledialog


    【解决方案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 怎么办?),这可能会出现问题,因此最好应用过滤器来仅选择已知文件类型的子集.但这取决于您的要求。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 2011-02-19
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 2012-10-13
      相关资源
      最近更新 更多