受限制的FolderBrowserDialog,推荐的解决方案

时间:2011-07-05 20:04:45

标签: .net winforms customization folderbrowserdialog

除了选择文件夹外,我们希望阻止用户执行任何。我们不想让他删除文件/文件夹,重命名它们,访问上下文菜单等。但是我们不能覆盖任何东西,因为FolderBrowserDialog被密封了。

我们用Google搜索并找到了一些解决方案:

  • 实现我们自己的FolderBrowserDialog:没有时间,只能作为最后的手段接受
  • This guy为OpenFileDialog做过,可能会有效,但看起来有点矫枉过正

任何人遇到这个问题并找到了最佳解决方案吗?它必须是.NET 4.0兼容的

2 个答案:

答案 0 :(得分:1)

你最好的选择是使用Shell MegaPack中的FolderView控件 - 它可以按你想要的方式自定义 - 你可以转换shell上下文菜单,重命名,拖放,键盘快捷键等,

免责声明:我们是上面提到的FolderView的开发者。

答案 1 :(得分:0)

最后,我们解决了它实施我们自己的控制。它比我们想象的要简单得多。简而言之,我们只是从System.Windows.Forms.Form继承了一个类,左边是System.Windows.Forms.TreeView,右边是System.Windows.Forms.ImageList,用于显示当前文件夹的内容。然后我们从Shell32 DllImport'ed SHGetFileInfo和ExtractIconEx,以使TreeView和ImageList的图标看起来像资源管理器,瞧!