如何在OpenFileDialog窗口中隐藏功能和可选文件夹/驱动器?

时间:2013-02-18 16:54:41

标签: c# winforms

我目前正在为运行WES7的嵌入式设备开发软件。该应用程序是一个标准的.NET 3.5 WinForms项目。

要求是用户应该能够从他们的pendrive或网络中浏览和选择特定文件,而不能从系统驱动器上的任何位置浏览和选择特定文件。所以我正在寻找一种解决方案,以某种方式隐藏标准OpenFileDialog窗口上的链接和按钮,因此如果有任何网络位置链接,用户只会看到他们的pendrives。

我在MSDN上和其他论坛上也在搜索,直到现在我才发现任何想法。如果没有办法使用标准的OpenFileDialog工作,是否有任何简单的自定义组件用于浏览限制在指定驱动器或父文件夹的文件?

1 个答案:

答案 0 :(得分:1)

在这里,它就像Customizing Your Open File Dialog

一样简单
  

OpenFileDialog类公开了一组属性来配置   对话。例如,您可以选择初始目录,即初始目录   过滤索引,窗口的标题,是否可以是多个文件   选择,以及应用程序的当前目录是否应该是   关闭前恢复。该类还会触发一个事件(称为FileOk)   每当用户点击“打开”按钮时。

     

OpenFileDialog是一个密封的类,所以你无法从中派生出来。   但是,如果要自定义文件对话框的行为,请执行   在可能的范围内,您应该创建一个全新的类   派生自抽象类FileDialog。在这种情况下,你有   访问一些强大但受保护的方法,如HookProc   和RunDialog。 HookProc定义了对话框钩子程序   将特定功能添加到公共对话框....

<强>更新

在Windows 7 PC上,它不起作用。例如:

OpenDialogPlaces o = new OpenDialogPlaces();
//o.Places.Add(18);
//o.Places.Add(5);
//o.Places.Add(6);
o.Init();
o.OpenDialog.ShowDialog();
o.Reset();

仍然显示左手中的所有内容:

enter image description here

它在以前版本的Windows中有效:

enter image description here

另一件事似乎是微软改变了ComDlg32的位置,我尝试了两个地方但没有运气。

enter image description here