4

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

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

我已经在 MSDN 和其他论坛上搜索过,直到现在我才找到任何想法。如果无法使用标准的 OpenFileDialog 来完成这项工作,是否有任何简单的自定义组件可用于浏览限制在指定驱动器或父文件夹中的文件?

4

1 回答 1

1

给你,就像自定义打开文件对话框一样简单

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();

仍然在左侧显示所有内容:

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

于 2013-06-04T04:12:32.783 回答