0

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

1 回答 1

0

myPropertyGrid.ExpandAll(TRUE)我发现我可以简单地通过在初始化属性网格的代码末尾调用(对我来说是 InitPropertyGrid())来消除这个问题。这似乎迫使所有属性扩展。

于 2011-09-30T22:04:58.090 回答