您是正确的,Windows 的“打开文件”常用对话框显示 Internet 快捷方式以及文件夹。我不知道为什么会存在这种行为,但它就在那里——它发生在 Win32(尝试记事本验证)以及 WinForms 应用程序中。
有一种方法可以解决这个问题,但警告:这很hacky!如果您从 FileDialog 类派生自定义文件对话框类,则可以访问一些受保护的事件,您可以使用这些事件来自定义 FileDialog 操作的各个方面。
Dino Esposito 在 2003 年 11 月写了一篇 MSDN 杂志文章,展示了这种技术的工作原理。这篇文章不再在 MSDN 站点上,但您可以在此处的 Wayback 机器的存档中获取它:http://web.archive.org/web/20150117123625/http: //msdn.microsoft.com/en-us/magazine /cc300434.aspx。
您可能需要做的是挂钩或子类化文件对话框的 WndProc,手动查看文件列表控件,识别作为快捷方式的条目,并将 Windows 消息发送到文件列表控件以删除这些项目。然后您需要注意该列表的刷新(例如从目录更改)并重复过滤操作。
这将是一个巨大的黑客攻击,但这是可能的。
如果这是太多的工作或太多的hackiness,我建议只使用 FileOk 事件来防止用户通过Cancel=true
从 FileOk 事件的 CancelEventHandler 返回来选择快捷方式。