情况:我正在编写一个程序,其中用户单击一个按钮以在 TabControl 中创建选项卡。用户创建了 5 个选项卡,然后想要删除选项卡 3。这会留下选项卡 1、2、4 和 5。
如何重新排序选项卡以填补空白(选项卡 4 变为新的选项卡 3,选项卡 5 变为选项卡 4,等等)?TabControl 是否为此提供了内置功能?
情况:我正在编写一个程序,其中用户单击一个按钮以在 TabControl 中创建选项卡。用户创建了 5 个选项卡,然后想要删除选项卡 3。这会留下选项卡 1、2、4 和 5。
如何重新排序选项卡以填补空白(选项卡 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);
使用一个包含所有标签页的 Tabpage 数组,通过 TabControl.SelecetedIndex 在 TabPage 数组中搜索,在删除后找到 TabPage 的索引,然后您可以执行任何操作,这意味着您只需从 TabControl 中删除 Tabpage,而不是从 TabPage Array 中删除以及在需要时其中之一在 TabControl 中搜索。您可以通过将标签属性设置为数组的实际索引,将选定的标签页与标签页数组相关联。使用这 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 定义一个枚举(用于 ReadAbility 和 Index to Tabpage 有意义的名称):
public enum TABPAGE { TabP1 = 0, TabP2 = 1, TabP3 = 2};