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 出错

属性控件CMFCPropertyGridCtrl简单用法

MFC里的CMFCPropertyGridCtrl怎么多页切换

请教高手一个关于CMFCPropertyGridCtrl消息处理的问题

取消设置数组的最后一项