【发布时间】:2009-09-26 13:46:01
【问题描述】:
我们需要从 IFileDialogControlEvents::OnButtonClicked 更改活动的 Vista/Win7 打开文件对话框中的选定文件类型过滤器。 IFileDialog::SetFileTypeIndex 更新组合框中的文本,但项目列表没有刷新,这意味着项目不再反映“文件类型”组合框中的内容。
我们尝试了各种方法来刷新视图,但均未成功。有没有人有这样的技术?
一个可能的线索:即使您手动单击“刷新”按钮,视图也不会刷新,这使我们相信公共对话框中的内部值可能没有被 IFileDialog::SetFileTypeIndex 更新。我们还有什么需要做的吗?
更新: 结果表明,对 IFileDialog::GetFileTypeIndex 的后续调用不会返回我们刚刚使用 SetFileTypeIndex 设置的索引,即使组合框显示了正确的过滤器。这让我更加想,如果对话框已经打开,IFileDialog 中的某些内部值不会被 SetFileTypeIndex 更新。
更新: 这是一个 Windows 错误。请参阅下面的解决方法代码。
【问题讨论】:
-
你能发布最小样本来重现这种行为吗?
-
Shay,在对话框打开后对 IFileDialog::SetFileTypeIndex 的任何使用都会导致此行为。它会更新控件中显示的过滤器,但不会更新 GetFileTypeIndex 返回的索引号,也不会刷新显示。 MS 已确认这是 Vista 和 Win7 RTM 中的错误。请参阅下面的解决方法代码
标签: filter