2008-11-19 10 views
0

Comment mettre en œuvre certains des onglets doivent fermer par certains événements ou un clic de bouton?Tabcontrol select

+0

Vous voudrez probablement clarifier cette question. – Shog9

+0

Je ne comprends pas non plus la question ... la clarification s'il vous plaît. – ahockley

Répondre

1

Vous pouvez supprimer un onglet de TabControl comme ceci:

tabControl1.TabPages.Remove(tabControl1.SelectedTab); 

Lors de la fermeture de plusieurs onglets vous pouvez supprimer les onglets avec un numéro d'index plus élevé d'abord comme l'index des pages de l'onglet change lorsque vous pop un onglet :

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); 
    } 
} 

Si vous avez besoin des onglets après les fermer, puis Hide() ne sera pas utile. Vous devez stocker une référence pour chaque onglet dans la mémoire et ajouter ou les insérer plus tard:

tabControl1.TabPages.Remove(tabPage1); 
tabControl1.TabPages.Add(tabPage1); 
tabControl1.TabPages.Insert(0, tabPage1); 

En utilisant l'exemple ci-dessous, vous pouvez conserver une collection d'onglets que vous avez fermé et les pousser à TabControl plus tard. De préférence, vous allez créer une petite classe qui vous permet de sauvegarder la position et de faire référence aux onglets. Cet exemple utilise un générique List et Control.Tag qui fait la même chose.

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(); 
}