众所周知,在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对话框呢?
第一:右击项目的“依赖项”,选择添加引用;

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

这里需要注意:.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条)
实际上,在项目文件加上true就可以了
@Sagilio:实际上,在项目文件将UseWindowsForms设置为true就可以了
@Sagilio:强
然而我直接在文件顶部引入 using Microsoft.Win32;
就能使用这 OpenFileDialog 和 SaveFileDialog 了,也没设置什么。
@椎:谢谢分享