禁用右键单击文件夹browserdialog对话框- wpf

本文关键字:对话框 wpf browserdialog 文件夹 右键 单击 | 更新日期: 2023-09-27 18:05:10

 System.Windows.Forms.FolderBrowserDialog dlg = new FolderBrowserDialog();
 HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
 System.Windows.Forms.IWin32Window win = new OldWindow(source.Handle);
 System.Windows.Forms.DialogResult result = dlg.ShowDialog(win);

我已经用这个来获得文件夹对话框,但现在我需要禁用右键单击该文件夹对话框,这样我就可以防止从那里删除文件夹。enter code here

创建自定义文件夹对话框是我想采用的最后一个选项。

那么,有没有人建议任何可能的解决方案,没有自定义文件夹对话框。

禁用右键单击文件夹browserdialog对话框- wpf

你不能。该类不能被继承,因此您不能重写任何设置。没有事件可以挂钩。

所以你有几个选项:

  1. Roll Your Own
  2. 使用文件系统锁定用户环境。
  3. 购买具有此功能的第三方控件。

我们选择了选项2,因为最终用户不需要在我们的RDP服务器上使用"正常"的windows应用程序/文件位置,他们只需要运行我们的应用程序。他们被添加到的组织单元(Organizational Unit, OU)应用了他们只能访问我们希望他们访问的文件夹的权限。他们不能看到你在对话框中看到的任何普通项目,但可以创建文件夹,保存项目,从我们允许他们使用的文件夹中加载项目。

拉文德拉,

因为在上下文菜单中删除是一个windows的功能,你将不得不修改注册表设置。

本质上你必须修改/删除删除注册表项&代码执行后,必须对其进行恢复。

您可以在:HKEY_CLASSES_ROOT下找到注册表项。(你确实需要一些时间来理解这个条目)。

,

  System.Windows.Forms.FolderBrowserDialog fd = new System.Windows.Forms.FolderBrowserDialog();
  //Get key for New menu option in Context menu.
  RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"Directory'Background'shellex'ContextMenuHandlers'New",true);
  //Set it to blank.
  key.SetValue("", "");
  fd.ShowDialog();
  //Restore the value.
  key.SetValue("", "{D969A300-E7FF-11d0-A93B-00A0C90F2719}");`