C#实现同一个对话框打开目录和文件

下载地址: 【北方网通】    【电信网通】

【下载说明】

1 点击上面的地址,打开下载页面

2 点击"普通下载"--等待30秒--点击"下载"按钮--保存

点击这里查看原文

介绍

本文中的代码,演示了一种是用FileOpenDialog控件(在.NET 2.0以上版本中可用)来从同样的一个对话框中选择打开文件或者目录。

背景

在我的开源工程里,我一直在寻找能够让用户从同一个对话框里面选择文件或目录的控件。搜索过网络之后,我了解到了一些解决方案(一个是使用非托管代码,一个是使用自定义控件)。不幸的是,这两个解决方案对我来说都不起作用。第一个解决方案适用了目录选择对话框(这与打开文件对话框相比,相当的不方便),第二个解决方案不能够支持100%的对话框功能。

然后,我决定试着去阅读WinMerge的代码,想要看看他们用C++是如何去实现同样的功能的。结果是,所使用的解决方案刚好是用.NET来实现的。

使用代码

让打开文件对话框能够同时选择文件和目录的方法是设置它的ValidateNamesCheckFileExists属性为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类,并且添加了一些帮助性的属性来取得返回的文件名。

修订历史

·                                11/25/2009 –文章第一次发布

·                                11/30/2009 –改动代码,使得在Windows 7下可以正常运行.


【更多阅读】
  1. [译]用C#检测你的打印机是否连接
  2. [原]PjConvertImageFormat:用FreeImage.NET写的一个35种图像格式转换程序
  3. [译]C#将Enum枚举映射到文本字符串
  4. [译]C# DirectShow编程手册及实例
  5. [原]Hotkey.cs:为应用程序添加热键
  6. [译]在.NET中使用DirectShow
  7. [原]使用Excel的VBA来读取和修改bmp位图像素数据
  8. [原]C#读取CSDN博客的文章名称及地址
  9. [原]QQHelper:QQ大家来找茬 辅助工具 外挂
  10. [译]将C++代码转换为HTML

你可能感兴趣的:(C#)