Ich arbeite in einem C# Winforms-Projekt und ich habe ein Benutzer-Steuerelement, das auf seine Auswahl aus einem Toolstrip-Menü geladen wird. Ich habe ein Wörterbuch-Lookup-Set, um beim Laden des Formulars der Benutzersteuerung für andere Funktionen auftreten. Wenn ich das Benutzersteuerelement schließe, verwende ich einfach die Methode ".Hide();". Mir ist aufgefallen, dass beim ersten Laden der Benutzerkontrolle alles in Ordnung ist, aber wenn ich sie schließe und sie beim zweiten Mal wieder öffne, wird eine neue Instanz des Objekts erstellt, wodurch meine Wörterbuchabfrage durcheinander gerät. Daher schrieb ich etwas Code in einem Versuch, das Problem zu beheben.
Was ich tun muss, ist irgendwie zu sagen, dass, wenn eine Instanz der Benutzersteuerung bereits vorhanden ist, nicht eine neue Instanz dieses Objekts erstellen. Stattdessen soll die Benutzersteuerung einfach wieder sichtbar gemacht werden. Daher habe ich Code geschrieben, um zu versuchen, diesen Zweck zu erreichen. Wenn ich das Element das erste Mal auswähle, ist alles in Ordnung. Wenn ich die Benutzersteuerung ausblende und versuche, sie wieder zu öffnen, passiert nichts.
Nachfolgend der Code, den ich zu diesem Zweck geschrieben habe und der bei der Auswahl des Eintrags aus dem Toolstrip-Menü erscheint:
if (Controls.ContainsKey("CheckAvailUserControl"))
{
Controls["CheckAvailUserControl"].Dock = DockStyle.Fill;
Controls["CheckAvailUserControl"].Visible = true;
Controls["CheckAvailUserControl"].Show();
Controls["CheckAvailUserControl"].Refresh();
}
else
{
UserControl checkAvailUserControlLoad = new CheckAvailUserControl();
Controls.Add(checkAvailUserControlLoad);
checkAvailUserControlLoad.Dock = DockStyle.Fill;
checkAvailUserControlLoad.Visible = true;
checkAvailUserControlLoad.Show();
}
Wenn ich meinen Code im Debugger verfolge, trifft er tatsächlich auf die richtigen Teile der obigen if/else-Anweisung. Seine nur nicht die Anzeige der Benutzer-Steuerelement auf dem Bildschirm das 2.
Die Frage ist: Wie schaffe ich es, dass das Steuerelement korrekt geladen wird, wenn ich es schließe und dann erneut aus dem Toolstrip-Menü auswähle?
0 Stimmen
Die Frage ist: Wie schaffe ich es, dass das Steuerelement korrekt geladen wird, wenn ich es schließe und dann erneut aus dem Toolstrip-Menü auswähle?