.NET Core WPF 中使用OpenFileDialog窗体

众所周知,在WPF程序中,要是实现“浏览”(也就是打开一个窗体,可以在其中选择文件)的功能,最方便的莫过于使用Windows Form程序中的OpenFileDialog类。 因此在WPF程序中,需要去引用System.Windows.Forms命名空间。

在最新的VS2019中,最新的.NET CORE 也增加了WPF应用。但因为.NET Core的架构与.Net Framework有所不同,特别是初学者都找不到属性的“引用”,继而发现他使用了“依赖项”,从传统的dll文件引用,变成了NuGet包引用,让人有点摸不着头脑。

实际上,在.NET Core的WPF应用中,也可以像传统的WPF应用一样引用Dll文件。只不过在右击“依赖性”选线,选择添加菜单后,用户看不到熟悉的“框架”,而需要点击“浏览”,手动找到需要的dll文件,然后引用即可。

那么,如果在.Net Core框架下的WPF应用程序中使用OpenFileDialog对话框呢?

第一:右击项目的“依赖项”,选择添加引用;

.NET Core WPF 中使用OpenFileDialog窗体

第二:点击“浏览”,在弹出的文件选择框中,找到system.windows.forms.dll文件。

.NET Core WPF 中使用OpenFileDialog窗体

这里需要注意:.NET的安装位置,根据操作系统和其本身的版本的不同而不同。我这是windows 10 64位的企业版,安装的vs2019最新版。因此system.windows.forms.dll文件位于:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2。各位读者应该找自己机器上安装的位置。

点击“添加”,然后在图一中,选中System.windows.Forms.dll,并点击“确定”。至此,你的项目引用中就已经添加了这个dll文件的应用。

第三,在代码也,加入system.windows.forms命名空间。

这个地方的做法,就是普通的C#语言,在文件的头部,添加一条using 语句以导入命名空间:

      using System.Windows.Forms;

第四,在你需要的地方,使用OpenFileDialog类:

        // 浏览文件
        private void Btn_Browse(object sender, RoutedEventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();
            fileDialog.Filter = "所有文件.*|*.*";
            fileDialog.Multiselect = true;
            if( fileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string[] filenames = fileDialog.FileNames;
                foreach(string str in fileDialog.FileNames)
                {
                    // 去除重复的
                    if(!lsb_Files.Items.Contains(str))
                    {
                        lsb_Files.Items.Add(str);
                    }
                }
            }
        }

本文为个人原创,自己一点点理解,如有错误,烦请指点。

原文出处:CSDN

原文链接:https://blog.csdn.net/raynadofan/article/details/103654811

本文观点不代表Dotnet9立场,转载请联系原作者。

发表评论

登录后才能评论

评论列表(5条)

  • Sagilio
    Sagilio 2020年5月22日 19:45

    实际上,在项目文件加上true就可以了

  • 椎
    2020年7月7日 13:36

    然而我直接在文件顶部引入 using Microsoft.Win32;

    就能使用这 OpenFileDialog 和 SaveFileDialog 了,也没设置什么。