mercredi 18 septembre 2013

TabControl and TabPage visible

Je travaille actuellement avec un TabContol et Visual Studio 2008 en C# et je veux programmatiquement changer de TabPage. Je suis très surpris par ce que je trouve sur ce sujet sur Internet :

http://www.thejoyofcode.com/Show_and_Hide_tab_pages_in_Windows_Forms.aspx
Là on me raconte que plein de gens disent que c'est impossible que de toutes les façons les méthodes Show() et Hide() de l'objet TabPage n'ont aucune action ! Joy of Code part ensuite dans des considérations hallucinantes avec du code pour gérer la collection de TabPage de mon TabControl :
// "hides" tab page 2
_tabControl.TabPages.Remove(_tabPage2);

// "shows" tab page 2
if (_tabControl.TabPages.Contains(_tabPage2))
{
    _tabControl.TabPages.Add(_tabPage2);
}

Il fait encore plus fort avec ce genre de code :
// Suspend and resume layout to avoid flickering.
_tabControl.SuspendLayout();
_tabControl.TabPages.Clear();
_tabControl.TabPages.Add(_tabPage1);
_tabControl.TabPages.Add(_tabPage2);
_tabControl.ResumeLayout();

Bref en plus cela ne fonctionne pas et ce n'est pas ce que l'on veut !

http://stackoverflow.com/questions/552579/how-to-hide-tabpage-from-tabcontrol
Ici également on nous dit que cela n'est pas possible ...avec WinForms 2.0.

Bref je perds mon temps et les choses ont dues être corrigées depuis car le code est tout simple.

Solution pour changer de TabPage dans un TabControl

Ayant pris soin de nommer mon TabControl : tabControlMain
Et dans la collection de TabPages j'ai deux TabPage : tabPage1 et tabPage2 voici le code :

private void buttonShowTabPage1_Click( object sender, EventArgs e )
{
tabPage2.Hide();
tabPage1.Show();

tabControlMain.SelectedIndex = 0;
}

private void buttonShowTabPage2_Click( object sender, EventArgs e )
{
tabPage1.Hide();
tabPage2.Show();

tabControlMain.SelectedIndex = 1;
}

C'est tout simple finalement, non ?

Have fun !

2 commentaires:

  1. Réponses
    1. salut "big theo", merci pour ton commentaire, n'hésite pas à revenir par ici, bonne année ;)

      Supprimer