Ich habe einen Windows-Formular-Bildschirm mit einer Menüleiste, die an der linken Seite des Formulars angedockt ist, ähnlich wie bei Outlook 2003, und einem Panel, das den Rest der rechten Seite des Formulars einnimmt.
Mein linkes Menü enthält Einträge. Wenn ich auf diese Elemente klicke, möchte ich das entsprechende Benutzersteuerelement (das als "Unterformular" fungiert) auf dem rechten Seitenbereich laden. Das ist mir gelungen, und es funktioniert gut.
Die Sorge, die ich aber habe ist, ob oder nicht meine Benutzerkontrollen ordnungsgemäß entsorgt werden oder wenn Sie im Speicher bleiben, wenn der Benutzer ein anderes Menüelement (und als solche, lädt eine andere Benutzerkontrolle/Unterformular) klickt.
Der Code ist ähnlich wie dieser:
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();
}
}
Ich bin mir nicht sicher, ob die panel1.Controls.Clear(), die ich am Anfang der Methode aufrufe, ausreicht, damit die nicht mehr verwendeten Benutzersteuerelemente rechtzeitig in den Müll geworfen werden?
Meinem Verständnis nach sollte es keinen Verweis links in der Anwendung sein, sobald aus dem Bedienfeld gelöscht, aber ich bin nicht sicher, wenn ich etwas anderes oder ein angemessen leichtes Tool tun sollte, das ich verwenden könnte, um zu bestätigen, dass meine Unterformulare entsorgt werden, wie Sie sollten und dass es nicht irgendeine Art von Speicher/Ressourcen-Leck verursacht?