C#实现同一个对话框打开目录和文件
本文中的代码,演示了一种是用FileOpenDialog控件(在.NET 2.0以上版本中可用)来从同样的一个对话框中选择打开文件或者目录。
背景
在我的开源工程里,我一直在寻找能够让用户从同一个对话框里面选择文件或目录的控件。搜索过网络之后,我了解到了一些解决方案(一个是使用非托管代码,一个是使用自定义控件)。不幸的是,这两个解决方案对我来说都不起作用。第一个解决方案适用了目录选择对话框(这与打开文件对话框相比,相当的不方便),第二个解决方案不能够支持100%的对话框功能。
然后,我决定试着去阅读WinMerge的代码,想要看看他们用C++是如何去实现同样的功能的。结果是,所使用的解决方案刚好是用.NET来实现的。
使用代码
让打开文件对话框能够同时选择文件和目录的方法是设置它的ValidateNames和CheckFileExists属性为false,并且设置将FileName属性设置为一些特殊的字符串来保证选择的是目录(如dialog.FileName ="Folder Selection";).
// Set validate names and check file exists to false otherwise windows will
// not let you select "Folder Selection."
dialog.ValidateNames = false;
dialog.CheckFileExists = false;
dialog.CheckPathExists = true;
...
// Always default to Folder Selection.
dialog.FileName = "Folder Selection.";
为了使用更方便,我在一个自定义的类FileFolderDialog里面,扩展了OpenFileDialog类,并且添加了一些帮助性的属性来取得返回的文件名。
补充:软件开发 , C# ,