我目前正在为运行 WES7 的嵌入式设备开发软件。该应用程序是一个标准的.NET 3.5 WinForms 项目。
要求是用户应该能够从他们的随身碟或网络浏览和选择特定文件,但不能从系统驱动器上的任何位置浏览和选择特定文件。因此,我正在寻找一种解决方案,以某种方式隐藏标准 OpenFileDialog 窗口上的链接和按钮,以便用户只能看到他们的随身碟(如果有)或网上邻居链接。
我已经在 MSDN 和其他论坛上进行搜索,直到现在我才找到任何想法。如果无法使用标准 OpenFileDialog 来完成此工作,是否有任何简单的自定义组件用于浏览仅限于指定驱动器或父文件夹的文件?
在这里,就像自定义打开文件对话框一样简单
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();
Run Code Online (Sandbox Code Playgroud)
仍然在左侧显示所有内容:

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

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