使用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.
当我从选项卡中检索数据时,这会引起问题,因为我在选项卡三中填写的内容丢失了,而以前在选项卡二中的数据丢失了。
有人对管理此方法有任何建议吗?