我在选项对话框中使用了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);
答案 0 :(得分:0)
我发现只需在代码末尾调用myPropertyGrid.ExpandAll(TRUE)
来初始化属性网格(我的InitPropertyGrid())就可以消除这个问题。这似乎迫使所有属性扩展。