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
创建自定义folderDialog框是我想要的最后一个选项..
那么,如果没有自定义的folderDialog,有人可能会建议任何可能的解决方案。
答案 0 :(得分:2)
你做不到。该类无法继承,因此您无法覆盖任何设置。没有事件可以挂钩。
所以你有几个选择:
我们选择了选项2,因为最终用户不需要在我们的RDP服务器上使用“普通”Windows应用程序/文件位置,他们只需要运行我们的应用程序。添加它们的组织单位(OU)应用权限,他们只能访问我们希望他们有权访问的文件夹。他们看不到显示对话框时会看到的任何正常项目,但可以创建文件夹,保存项目,从我们允许其使用的文件夹中加载项目。
答案 1 :(得分:0)
拉温德拉,
由于ContextMenu中的“删除”是一项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}");`