0

使用 Visual C++ MFC。

我有一个对话框页面,其中包含一个选项卡控件对象。我创建了自己的选项卡控件类,它派生自CTabCtrl,我在其中创建了包含在数组中的所有选项卡页,如下所示:

tabArray[0] = new TabPage;
tabArray[1] = new TabPage;

tabArray[0]->Create(DIALOG, this);
tabArray[1]->Create(DIALOG, this);

在我的初始对话框页面中,我有一堆复选框。根据这些复选框的状态,我添加/删除标签页(但不是底层的 TabPage 类!)。

这样做是这样的。我跟踪在 m_fTabEnabled 中启用/禁用了哪些选项卡。选项卡的状态通过复选框进行切换。这用于确定需要插入哪个选项卡。

m_fTabEnabled[iTab] = !m_fTabEnabled[iTab];

DeleteAllItems();

for(int i = 0; i < NUMOFTABS; ++i)
{
    if(m_fTabEnabled[i]) InsertItem(i, m_sTabNames[i]);
}

使用这种方法,我有一个问题,如果我启用了三个选项卡,并且我删除了第二个选项卡,那么包含来自第二个选项卡的数据的对话框将显示在第三个选项卡上。例如:

tab 1, label 1, contains: 1
tab 2, label 2, contains: 2
tab 3, label 3, contains: 3

remove tab 2, tab 3 is shifted to tab 2

tab 1, label 1, contains: 1
tab 2, label 3, contains: 2
tab 3 hidden.

当我从选项卡中检索数据时,这会导致问题,因为我在选项卡 3 中填写的内容会丢失到以前在选项卡 2 中的数据。

有人对管理此问题的方法有任何建议吗?

4

0 回答 0