繁体   English   中英

从TabControl移除TabPage

[英]Remove TabPage from TabControl

所以我需要动态添加和删除一些TabPage 用户单击“显示选项卡” =添加了storage_page

private void storage_menuItem_Click(object sender, EventArgs e) {
    storage_page.Text = storage_page.Name = "Storage";
    main_tabControl.TabPages.Add(storage_page);
    main_tabControl.SelectedTab = storage_page;
}

当他选择另一个页面时,必须删除storage_page

private void main_tabControl_SelectedIndexChanged(object sender, EventArgs e) {
    for (int i = 0; i < main_tabControl.TabPages.Count; i++) {
        if (main_tabControl.TabPages[i].Name.Equals("storage", StringComparison.OrdinalIgnoreCase) && main_tabControl.SelectedTab.Name != "Storage") {
            main_tabControl.TabPages.RemoveAt(i);
            break;
        }
   }
}

当我单击“显示选项卡”页面时。 但是当我选择其他页面时,我看到ArgumentOutOfRangeException导致了Application.Run(new Form_Authentication()); 线

我怎样才能做到这一点?

我认为问题是您将i变量从0增加1到main_tabControl.TabPages.Count

我假设main_tabControl.TabPages.Count = 10,如果要删除第7个元素会发生什么? 那时,main_tabControl.TabPages.Count = 4,i变量=6。因此,i变量超出了TabPages的范围。

您应该更改代码:

private void main_tabControl_SelectedIndexChanged(object sender, EventArgs e) {
    for (int i = main_tabControl.TabPages.Count - 1; i >=0 ; i--) {
        if (main_tabControl.TabPages[i].Name.Equals("storage", StringComparison.OrdinalIgnoreCase) && main_tabControl.SelectedTab.Name != "Storage") {
            main_tabControl.TabPages[i].Dispose();
            break;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM