CTabCtrl,启用和禁用选项卡

时间:2018-10-15 07:55:46

标签: c++ visual-c++ mfc ctabctrl

使用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.

当我从选项卡中检索数据时,这会引起问题,因为我在选项卡三中填写的内容丢失了,而以前在选项卡二中的数据丢失了。

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

0 个答案:

没有答案