1
风云作者: 我正在写一个程序,用户点击一个按钮在TabControl中创建标签。用户已创建了5个选项卡,然后希望删除选项卡3.这会留下选项卡1,2,4和5.如何在删除选项卡后以编程方式重新排列tabcontrol中的选项卡?
如何重新排列选项卡以填补空白(选项卡4变为新的选项卡3,标签5变成标签4等)? TabControl有一个内置函数吗?
风云作者: 我正在写一个程序,用户点击一个按钮在TabControl中创建标签。用户已创建了5个选项卡,然后希望删除选项卡3.这会留下选项卡1,2,4和5.如何在删除选项卡后以编程方式重新排列tabcontrol中的选项卡?
如何重新排列选项卡以填补空白(选项卡4变为新的选项卡3,标签5变成标签4等)? TabControl有一个内置函数吗?
参考临客:MSDN Add And Remove Tab From Tabcontrol
// Removes the selected tab:
tabControl1.TabPages.Remove(tabControl1.SelectedTab);
// Removes all the tabs:
tabControl1.TabPages.Clear();
,如果你想通过指数
tabControl1.TabPages.RemoveAt(i);
使用标签页数组,它是所有的TabPages的集合中删除选项卡,通过TabControl.SelecetedIndex在TabPage的阵列搜索,找到删除后TabPage的索引,然后你可以做任何事情,这意味着你只需从TabControl中删除Tabpage,而不是从TabPage数组,当需要其中一个在TabControl中搜索时,可以通过设置Tag将Selected Tabpage与Tabpage数组关联起来属性到数组的实数索引。 使用这2个功能:
TabPage[] tabPages;
private void MyForm_Load(object sender, EventArgs e)
{
tabPages = new TabPage[tabServices.TabPages.Count];
for (int i = 0; i < tabServices.TabPages.Count; i++)
{
tabServices.TabPages[i].Tag=i;//for relation between TabControl and Array
tabPages[i] = tabServices.TabPages[i];
}
}
private int GetTabIndex(TabPage pg)
{
return int.Parse(tabServices.TabPages[tabServices.SelectedIndex].Tag.ToString());
}
private TABPAGE GetTABPAGE(TabPage pg)
{
return (TABPAGE)int.Parse(tabServices.TabPages[tabServices.SelectedIndex].Tag.ToString());
}
private void tabServices_SelectedIndexChanged(object sender, EventArgs e)
{
switch (GetTABPAGE(tabServices.TabPages[tabServices.SelectedIndex]))
{
case TABPAGE.TabP1:
//Do Works;
break;
case TABPAGE.TabP2:
//Do Works;
break;
case TABPAGE.TabP3:
//Do Works;
break;
case TABPAGE.TabP4:
//Do Works;
break;
}
}
,并定义枚举了所有的TabPages(用于可读性和索引标签页的名称):
public enum TABPAGE { TabP1 = 0, TabP2 = 1, TabP3 = 2};
谢谢,mojtaba,但我真正需要的是一种方法,一旦标签已被删除,重新排序标签。删除标签后,其余标签必须重新编号以消除间隙。如果我有5个选项卡,并删除Tab 3,我想重新排列其余选项卡,以便它们被编号为Tab 1,Tab 2,Tab 3和Tab 4.换句话说,Tab 4变成了Tab 3,Tab 5变成Tab 4等 – user2272380 2013-04-21 19:13:01
Tabcontrol数组索引改变后自动移除Tab,你的意思是什么? – mojtaba 2013-04-22 17:40:37
mojtaba,你最接近理解我在说什么。如果选项卡控件的数组索引自动更改,我如何重命名选项卡以反映此? – user2272380 2013-05-29 22:27:11