【问题标题】:Restricted FolderBrowserDialog, recommended solutionRestricted FolderBrowserDialog,推荐的解决方案
【发布时间】:2011-07-05 20:04:44
【问题描述】:

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

我们搜索了一下,找到了一些解决方案:

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

有人遇到过这个问题并找到了最佳解决方案吗?它必须与 .NET 4.0 兼容

【问题讨论】:

  • 这是一个奇怪的限制。你为什么要这样做?如果用户有权限,他无论如何都可以从资源管理器中进行操作。
  • 限制这个有什么意义?用户只需切换到另一个程序,如 Explorer。使用正常的 Windows 安全策略强制用户访问权限,其他任何内容都是安全漏洞。
  • 可能是无法访问资源管理器的信息亭类型的环境。
  • 就像查尔斯说的,用户无法访问Windows或资源管理器。这是要求的一部分,我对此没有发言权。除了这个细节,我让它工作了;实际上,我正在使用已弃用的 VB6 DriveDirListBox 控件,我想替换它以摆脱编译警告

标签: .net winforms customization folderbrowserdialog


【解决方案1】:

最好的办法是使用 Shell MegaPack 中的 FolderView 之类的控件——它可以按照你想要的方式进行自定义——你可以打开 shell 上下文菜单、重命名、拖放、键盘快捷键等,

免责声明:我们是上述 FolderView 的开发者。

【讨论】:

  • 抱歉,我们需要免费的解决方案
【解决方案2】:

最后,我们通过自己的控制解决了这个问题。这比我们想象的要简单得多。简而言之,我们只是创建了一个继承自 System.Windows.Forms.Form 的类,左侧是 System.Windows.Forms.TreeView,右侧是 System.Windows.Forms.ImageList,以显示当前文件夹的内容。然后我们从 Shell32 中 DllImport'ed SHGetFileInfo 和 ExtractIconEx 以使 TreeView 和 ImageList 的图标看起来像 Explorer 的,瞧!

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2021-10-23
    • 2022-05-16
    • 1970-01-01
    相关资源
    最近更新 更多