情况: 我正在编写一个程序,用户单击按钮在TabControl中创建选项卡。用户创建了5个选项卡,然后想要删除选项卡3.这将留下选项卡1,2,4和5.
如何重新排序标签以填补空白(标签4成为新标签3,标签5变为标签4等)? TabControl是否具有内置函数?
答案 0 :(得分:0)
参考linke: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);
使用Tabpage数组,它是所有标签页的集合,通过TabControl.SelecetedIndex在TabPage数组中搜索,找到删除后的TabPage索引然后你可以做任何事情这意味着你只是从TabControl删除Tabpage,而不是从TabPage数组中删除Tabpage当需要其中一个在TabControl中搜索时,您可以通过将Tag Property设置为Array的Real Index来将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定义一个Enum(对于ReadAbility和Index to Tabpage有意义的名称):
public enum TABPAGE { TabP1 = 0, TabP2 = 1, TabP3 = 2};