CMFCPropertyGridCtrl 最后一项未绘制?
Posted
技术标签:
【中文标题】CMFCPropertyGridCtrl 最后一项未绘制?【英文标题】:CMFCPropertyGridCtrl last item not drawn? 【发布时间】:2011-09-28 22:48:04 【问题描述】:我有一个在选项对话框中使用的 CMFCPropertyGridCtrl。我的选项对话框类中有一个名为 InitPropertyGrid() 的方法。此方法清除所有属性并填充 CMFCPropertyGrid 对象(使用自定义设置对象作为属性值)并将它们附加到网格。
当我第一次打开我的对话框时,所有属性都正确显示。但是,如果我随后关闭我的对话框并重新打开它,则最后一个属性不会绘制在屏幕上。所有其他属性都正常绘制:
第一次:
所有后续时间:
如您所见,加号/减号图标在两种情况下都显示为减号,表示该部分已展开。当最后一项未显示时,单击 +/- 图标一次收缩并单击一次展开会正确显示最后一项。
请注意,当我关闭对话框时,我不会破坏它,而是重新显示它。然而,在对话框上调用 ShowWindow 之前,我调用了 InitPropertyGrid()(由 UpdateToCurrentSettings 调用)方法。
if(optionsDialog_ == NULL)
optionsDialog_ = new OptionsDialog(settings_, this);
optionsDialog_->Create(OptionsDialog::IDD, this);
optionsDialog_->UpdateToCurrentSettings();
optionsDialog_->ShowWindow(SW_SHOW);
【问题讨论】:
【参考方案1】:我发现我可以通过在初始化属性网格的代码末尾调用myPropertyGrid.ExpandAll(TRUE)
来解决这个问题(对我来说是InitPropertyGrid())。这似乎迫使所有属性展开。
【讨论】:
以上是关于CMFCPropertyGridCtrl 最后一项未绘制?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 CMFCPropertyGridCtrl 添加到对话框
MFC 里 CMFCPropertyGridCtrl 执行 DeleteProperty 出错
MFC里的CMFCPropertyGridCtrl怎么多页切换