我有一个在选项对话框中使用的 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);