如何创建类似资源管理器的文件夹浏览器控件?

34

使用C#和WinForms在VS2008中,我想创建一个文件浏览器控件,看起来和操作就像Windows资源管理器中的左侧面板。令人惊讶的是,.NET默认情况下不会提供此类控件。

理想情况下,我希望其内容与资源管理器中的完全相同。例如,在Windows 7上,它应该显示收藏夹和库伪文件夹。当然,如果可以的话,我不想为每个版本的Windows编写特定代码。

我已经浏览了一些相关内容,但它们都是手工制作的示例控件,因此无法完全与资源管理器中的控件相同。

是否有任何方法可以简单地重用资源管理器控件?或者,如果不能,则如何获得它将显示的项目树的访问权限?


1
我怀疑Explorer控件只是使用了树形控件,并在对话框代码中填充它。我不认为它会是一个特定的控件来显示文件夹。但我可能错了。 - Lazarus
你正在寻找 FolderBrowserDialog 吗?参考链接:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.folderbrowserdialog.aspx - shahkalpesh
1
@shahkalpesh:不,实际上我正在寻找对话框内部使用的控件。 - Thomas
3个回答

33

2
再次强调,这些都是在重新发明轮子,而且很可能会在各种边缘情况下出错。但是我接受这个答案,因为你提供了最多有用的链接。 - Thomas
11
@Thomas:我认为重新发明轮子是你唯一的选择,因为Windows不会公开那个控件以供在资源管理器之外使用。 - Jeff Yates

1

实现这样的控件并不像看起来那么容易。资源管理器使用的是 shell 项目,而不是文件系统项目(例如:控制面板、打印机文件夹等)。如果您需要实现它,我建议您查看 Windows shell 函数 http://msdn.microsoft.com/en-us/library/bb776426(VS.85).aspx


2
“实现这样的控件并不像看起来那么容易。”我意识到了这一点。这也正是为什么我宁愿不重复造轮子的原因。 - Thomas

0

看一下Shell MegaPack控件集。它提供了类似于Windows资源管理器的文件夹/文件浏览功能,具有大多数功能和功能,如上下文菜单、重命名、拖放、图标、覆盖图标、缩略图等。


2
我已经遇到过这个问题了。如果这不是我的第一个商业应用程序,我很乐意支付那299美元,但事实并非如此,我负担不起。 - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接