CMFCPropertyGridCtrl 最后一项未绘制?

发布于 2024-12-07 15:24:34 字数 884 浏览 0 评论 0原文

我有一个在选项对话框中使用的 CMFCPropertyGridCtrl。我的选项对话框类中有一个名为 InitPropertyGrid() 的方法。此方法清除所有属性并填充 CMFCPropertyGrid 对象(使用属性值的自定义设置对象)并将它们附加到网格。

当我第一次打开对话框时,所有属性都正确显示。但是,如果我关闭对话框并重新打开它,则最后一个属性不会绘制在屏幕上。所有其他属性均正常绘制:

第一次:

在此处输入图像描述

所有后续times:

在此处输入图像描述

如您所见,加号/减号图标在两种情况下都显示减号表示该部分已扩展。当最后一项未显示时,单击 +/- 图标一次可收缩,一次可展开,可使最后一项正确显示。

请注意,当我关闭对话框时,我不会销毁它,而只是重新显示它。然而,在调用对话框上的 ShowWindow 之前,我立即调用 InitPropertyGrid() (由 UpdateToCurrentSettings 调用)方法。

if(optionsDialog_ == NULL)
{
    optionsDialog_ = new OptionsDialog(settings_, this);
    optionsDialog_->Create(OptionsDialog::IDD, this);
}

optionsDialog_->UpdateToCurrentSettings();
optionsDialog_->ShowWindow(SW_SHOW);

I have a CMFCPropertyGridCtrl that I'm using in an options dialog box. I have a method in my options dialog class called InitPropertyGrid(). This method clears any properties and populates the CMFCPropertyGrid objects (using a custom Settings object for the property values) and appends them to the grid.

When I open my dialog box the first time all the properties show correctly. However, if I then close my dialog box and reopen it, the very last property is not drawn on the screen. All other properties are drawn normally:

First time:

enter image description here

All subsequent times:

enter image description here

As you can see, the plus/minus icon is showing minus in both cases to indicated the section is expanded. When the last item is not showing, clicking on the +/- icon once to contract and once to expand causes the last item to be correctly shown.

Note when I close the dialog box, I do not destroy it but just reshow it. However immediately before calling ShowWindow on the dialog I call the InitPropertyGrid() (called by UpdateToCurrentSettings) method.

if(optionsDialog_ == NULL)
{
    optionsDialog_ = new OptionsDialog(settings_, this);
    optionsDialog_->Create(OptionsDialog::IDD, this);
}

optionsDialog_->UpdateToCurrentSettings();
optionsDialog_->ShowWindow(SW_SHOW);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一个人的旅程 2024-12-14 15:24:34

我发现只需在初始化属性网格的代码末尾调用 myPropertyGrid.ExpandAll(TRUE) 即可消除此问题(对我来说为 InitPropertyGrid() )。这似乎迫使所有属性都扩大。

I found I can eliminate this problem simply by calling myPropertyGrid.ExpandAll(TRUE) at the end of the code where I initialize the property grid (InitPropertyGrid() for me). This seems to force all the properties to expand.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文