Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在FolderBrowser对话框-wpf中禁用右键单击?_C#_Wpf_Wpf Controls_Folderbrowserdialog - Fatal编程技术网

C# 在FolderBrowser对话框-wpf中禁用右键单击?

C# 在FolderBrowser对话框-wpf中禁用右键单击?,c#,wpf,wpf-controls,folderbrowserdialog,C#,Wpf,Wpf Controls,Folderbrowserdialog,我用它来获取文件夹对话框,但现在我需要禁用该文件夹对话框中的右键单击,以便防止从那里删除文件夹。enter code here 创建自定义文件夹对话框是我想采用的最后一个选项 那么,如果没有自定义folderDialog,有人能为这个问题提出任何可能的解决方案吗。无法继承该类,因此无法重写任何设置。没有可挂钩的事件 因此,您有两个选择: 滚你自己的 使用文件系统锁定用户环境 购买具有此功能的第三方控件 我们选择了选项2,因为最终用户不需要在我们的RDP服务器上使用“正常”的windows应用程序

我用它来获取文件夹对话框,但现在我需要禁用该文件夹对话框中的右键单击,以便防止从那里删除文件夹。
enter code here

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


那么,如果没有自定义folderDialog,有人能为这个问题提出任何可能的解决方案吗。无法继承该类,因此无法重写任何设置。没有可挂钩的事件

因此,您有两个选择:

  • 滚你自己的
  • 使用文件系统锁定用户环境
  • 购买具有此功能的第三方控件
  • 我们选择了选项2,因为最终用户不需要在我们的RDP服务器上使用“正常”的windows应用程序/文件位置,他们只需要运行我们的应用程序。他们添加到的组织单位(OU)将应用他们仅对我们希望他们访问的文件夹具有访问权限的权限。他们看不到您在显示对话框时看到的任何正常项目,但可以创建文件夹、保存项目、从我们授予他们使用权限的文件夹加载项目。

    Ravindra

    由于ContextMenu中的Delete是windows功能,因此必须修改注册表设置

    实际上,您必须修改/删除delete注册表项&在代码执行后,您必须恢复它

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

    例:


    谢谢你的回复。我将在:HKEY_CLASSES_ROOT下检查如何修改注册表项。如果你发现任何有用的链接,请共享它们。如果在还原原始注册表项之前计算机崩溃,会发生什么情况?@Calcolat:一个简单的尝试,catch block就可以做到这一点。在catch块内,可以恢复钥匙。@RavindraNadh:这方面有什么进展吗?@RavindraNadh:我会检查是否能找到任何东西并恢复。你知道有什么选项吗#3?
     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);
    
      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}");`