C# masquage et affichage d'un panneau sur le dessus d'un splitcontainer

J'ai un écran qui est divisé par un peu de splitcontainers. L'un d'eux contient des rectangles dont les composants utilisateur que j'ai fait, ces "rectangles" représentent les lits d'hôpitaux. Ce que je voulais faire, c'est de donner la possibilité à l'utilisateur de basculer entre cet "utilisateur vue component" et un "datagrid view".

J'ai donc créé un panneau pnlPatients dont je donne la même taille que le splitcontainer avec l'utilisateur composants. Lorsque l'utilisateur sélectionne "Changer de vue" le programme est censé pour basculer entre les deux dispositions.

Code:
Tentative 1:

if (pnlPatients.Visible)
  pnlPatients.Hide();
else
{
  pnlPatients.Show();
  pnlPatients.BringToFront();
}

Tentative 2:

pnlPatients.Visible = !pnlPatients.Visible;
pnlPatients.Invalidate();

La chose étrange est que les deux tentatives fonctionne comme ceci:

L'utilisateur voit d'abord le "composant utilisateur".
Si il serait de basculer de la vue, il serait correctement afficher le panneau sur le dessus de la vue précédente.
Si il ne bascule à nouveau, puis le panneau serait bien cachés.
Si il serait alors à nouveau basculer la vue, puis le panneau ne sera pas montré. NOTE: pendant le débogage, la propriété visible du panneau est correctement changé à VRAI ou FAUX. Mais pour une raison uniquement la première fois qu'il est mis visibles VRAI le panneau peut être vu.

Quelqu'un a une idée?

En ce qui concerne meilleur

Edit: j'ai aussi essayé, mais sans succès:

pnlPatients.Visible = !pnlPatients.Visible;
if (pnlPatients.Visible)
{
  pnlPatients.BringToFront(); 
}
else
{
  pnlPatients.SendToBack();
}
Et qu'est-ce que le Parent de deux Panneaux?
La Forme de base de Windows est le parent.

OriginalL'auteur Starceaker | 2010-09-29