Disposer correctement/la fermeture d'un contrôle utilisateur

J'ai un Formulaire Windows de l'écran avec une barre de menu ancrée à gauche sur la forme, semblable à celle d'Outlook 2003, et un panneau de prendre le reste de la partie droite de la forme.

Mon menu de gauche contient des éléments.
En cliquant sur ces éléments, je veux charger appropriées de contrôle de l'utilisateur (agissant en tant que "sous-formulaires") sur le côté droit du panneau.
J'ai réussi à le faire et il fonctionne bien.

Le souci que j'ai, toutefois, est de savoir si ou non mon usercontrols sont éliminées correctement ou si elles restent en mémoire lorsque l'utilisateur clique sur un autre élément de menu (et en tant que tel, charge un autre usercontrol/sous-formulaire).

Le code est similaire à ceci:

    private void ultraExplorerBar1_ItemClick(object sender, Infragistics.Win.UltraWinExplorerBar.ItemEventArgs e)
    {
        panel1.Controls.Clear();

        if (e.Item.Key == "Action")
        {
            ActionUserControl subForm = new ActionUserControl();
            panel1.Controls.Add(subForm);
            subForm.Show();                
        }
        else if (e.Item.Key == "Options")
        {
            OptionsUserControl subForm = new OptionsUserControl();
            panel1.Controls.Add(subForm);
            subForm.Show();
        }
    }

Je ne suis pas sûr si le panel1.Les contrôles.Clear() je vais appeler au début de la méthode est assez pour les usercontrols pas être utilisé plus d'être récupérées en temps en temps?

À ma connaissance, il ne devrait pas y avoir de référence à gauche dans l'application une fois désactivée dans le panneau, mais je ne suis pas sûr si je devrais être en train de faire quelque chose d'autre ou d'un raisonnablement léger outil que je pourrais utiliser pour confirmer que mon sous-formulaires sont éliminés comme il se doit et qu'il ne cause pas une sorte de mémoire/ressources fuite?

Essayez de l'appeler dans la boucle panel1.Controls.clear();
Il n'est pas, vous devez éliminer les contrôles du panneau de manière explicite. while (panel1.Les contrôles.Count > 0) panel1.Les témoins[0].Dispose();

OriginalL'auteur Kharlos Dominguez | 2011-11-02