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

Posted

技术标签:

【中文标题】如何创建类似资源管理器的文件夹浏览器控件?【英文标题】:How to create an Explorer-like folder browser control? 【发布时间】:2011-01-25 21:28:39 【问题描述】:

在 VS2008 中使用 C# 和 WinForms,我想创建一个文件浏览器控件,其外观和行为类似于 Windows 资源管理器中的左窗格。令我惊讶的是,默认情况下,.NET 不附带这样的控件。

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

我浏览了一下,有一些此类控件的示例,但它们都是手动滚动的,因此无法与资源管理器中的 100% 相同。

有什么方法可以简单地重用资源管理器控件吗?或者,如果没有,访问它会显示的项目树?

【问题讨论】:

我怀疑 Explorer 控件只是使用了一个树形控件并在对话框代码中填充它。我认为这不是显示文件夹的特定控件。我可能是错的。 您在寻找FolderBrowserDialog吗?参考:msdn.microsoft.com/en-us/library/… @shahkalpesh:不,基本上我正在寻找该对话框内部使用的控件。 【参考方案1】:

微软提供a walkthrough for creating a Windows Explorer style interface in C#。

Code Project 和其他网站上也有几个示例。直接的例子是Explorer Tree、My Explorer、File Browser 和Advanced File Explorer,但还有其他的。 Explorer Tree 似乎从我短暂的一瞥中看起来最好。

我在 Google 中使用搜索词 windows explorer tree view C# 来查找这些链接。

【讨论】:

再一次,这些都是在重新发明***,并且在各种极端情况下肯定会出错。但我接受了这一点,因为您提供的有用链接数量最多。 @Thomas:它认为重新发明***是您唯一的选择,因为 Windows 不会公开该控件以供在资源管理器之外使用。【参考方案2】:

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

【讨论】:

“实现这样的控件并不像看起来那么容易。”我意识到这一点。这正是我不想重新发明***的原因。【参考方案3】:

看看Shell MegaPack 控制集。它为 Windows Explorer 提供了类似文件夹/文件浏览的大部分特性和功能,如上下文菜单、重命名、拖放、图标、覆盖图标、缩略图等

【讨论】:

我已经遇到过。如果这不是我的第一个商业应用程序,我会很乐意支付 299 美元,但就目前而言,我负担不起。

以上是关于如何创建类似资源管理器的文件夹浏览器控件?的主要内容,如果未能解决你的问题,请参考以下文章

AU3中,请问类似这种窗口怎么创建?

C#中如何取得像资源管理器的树状列表?要有图标的。

创建一个类似于Windows资源管理器的下拉树菜单

android常用的布局管理器都有哪些,简述各布局管理器的布局特点

带有WPF的Aero玻璃框架上类似Windows资源管理器的搜索框

win10 x64 手动注册ocx控件的方法