2008-11-19 3 views
0

Как реализовать некоторые из вкладок необходимо закрыть некоторыми событиями или щелкнуть по одной кнопке?Tabcontrol select

+0

Возможно, вы захотите уточнить этот вопрос. – Shog9 2008-11-19 05:26:38

ответ

1

Вы можете удалить вкладку из 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 позже. Предпочтительно вы создадите небольшой класс, который позволит вам сохранить позицию и ссылку на вкладки. В этом примере используется общий список List и 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(); 
}