首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tabcontrol选择

Tabcontrol选择
EN

Stack Overflow用户
提问于 2008-11-19 05:25:37
回答 1查看 763关注 0票数 0

如何实现一些需要关闭的页签通过一些事件或者一些按钮点击?

EN

回答 1

Stack Overflow用户

发布于 2008-11-26 14:09:53

您可以按如下方式从TabControl中删除选项卡:

代码语言:javascript
复制
tabControl1.TabPages.Remove(tabControl1.SelectedTab);

关闭多个选项卡时,您可能需要先删除索引编号较高的选项卡,因为在弹出选项卡时,选项卡页的索引会发生变化:

代码语言:javascript
复制
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()将不会有任何帮助。您应该在内存中为每个选项卡存储一个引用,并在以后添加或插入它们:

代码语言:javascript
复制
tabControl1.TabPages.Remove(tabPage1);
tabControl1.TabPages.Add(tabPage1);
tabControl1.TabPages.Insert(0, tabPage1);

使用下面的示例,您可以保留已关闭的选项卡的集合,并在以后将它们推送到TabControl。最好创建一个小类,它允许您将位置和对选项卡的引用保存在中。本例使用泛型列表和执行相同操作的Control.Tag。

代码语言:javascript
复制
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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/301074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档