如何实现一些需要关闭的页签通过一些事件或者一些按钮点击?
发布于 2008-11-26 14:09:53
您可以按如下方式从TabControl中删除选项卡:
tabControl1.TabPages.Remove(tabControl1.SelectedTab);关闭多个选项卡时,您可能需要先删除索引编号较高的选项卡,因为在弹出选项卡时,选项卡页的索引会发生变化:
private void button1_Click(object sender, EventArgs e)
{
// Close second and fourth tab
if (tabControl1.TabPages.Count > 3)
{
// Work backwards when removing tabs
tabControl1.TabPages.RemoveAt(3);
tabControl1.TabPages.RemoveAt(1);
}
}如果您在关闭选项卡后再次需要它们,那么Hide()将不会有任何帮助。您应该在内存中为每个选项卡存储一个引用,并在以后添加或插入它们:
tabControl1.TabPages.Remove(tabPage1);
tabControl1.TabPages.Add(tabPage1);
tabControl1.TabPages.Insert(0, tabPage1);使用下面的示例,您可以保留已关闭的选项卡的集合,并在以后将它们推送到TabControl。最好创建一个小类,它允许您将位置和对选项卡的引用保存在中。本例使用泛型列表和执行相同操作的Control.Tag。
private List<TabPage> tabsClosed = new List<TabPage>();
private void button1_Click(object sender, EventArgs e)
{
// Close second and fourth tab
if (tabControl1.TabCount > 3)
{
// Keep a reference to tabs in memory before closing them
tabsClosed.Add(tabControl1.TabPages[1]);
tabsClosed.Add(tabControl1.TabPages[3]);
// Store the tabs position somewhere
tabControl1.TabPages[1].Tag = 1;
tabControl1.TabPages[3].Tag = 3;
// Work backwards when removing tabs
tabControl1.TabPages.RemoveAt(3);
tabControl1.TabPages.RemoveAt(1);
}
}
private void button2_Click(object sender, EventArgs e)
{
foreach (TabPage tab in tabsClosed)
{
//tabControl1.Controls.Add(tab);
tabControl1.TabPages.Insert((int)tab.Tag, tab);
}
tabsClosed.Clear();
}https://stackoverflow.com/questions/301074
复制相似问题