Kurzversion: Ich möchte das Form_Load() Ereignis auslösen, ohne das Formular sichtbar zu machen. Das funktioniert nicht, weil Show(), um den aktuellen Wert der Eigenschaft Visible ignoriert:Laden Sie ein Formular, ohne es anzuzeigen
tasksForm.Visible = false;
tasksForm.Show();
Lange Version: Ich habe eine WinForms-Anwendung mit zwei Formen: Haupt- und Aufgaben. Das Hauptformular wird immer angezeigt. Der Benutzer kann entweder auf eine Schaltfläche klicken, um das Aufgabenformular zu öffnen, oder auf einige Schaltflächen klicken, die eine Aufgabe direkt ausführen, ohne das Aufgabenformular zu öffnen.
Wenn ein Benutzer fragt, eine Aufgabe direkt auszuführen, möchte ich nur einige öffentliche Methoden auf dem Aufgabenformular aufrufen, ohne es anzuzeigen. Leider hängt die Aufgabenlogik von Dingen ab, die im Form_Load() - Ereignis vorkommen. Die einzige Möglichkeit, Form_Load() auszulösen, besteht darin, Show() aufzurufen. Das Beste, was ich habe in der Lage zu tun ist, um die Form im minimierten Zustand zeigen:
tasksForm.WindowState = FormWindowState.Minimized;
tasksForm.Show();
ich die sauberste Lösung nehme die Aufgaben Logik aus der Aufgaben Form und in eine Controller-Klasse zu ziehen wäre. Dann kann ich diese Klasse aus dem Hauptformular und aus dem Aufgabenformular verwenden und nur das Aufgabenformular laden, wenn ich es für den Benutzer sichtbar brauche. Wenn es jedoch leicht ist, das Formular zu laden, ohne es anzuzeigen, wäre das eine kleinere Änderung.
Ich ermutige Sie, mit der saubersten Lösung zu gehen. Es wird leichter für Sie sein, später zu warten. –
Wie ich in meiner Antwort gesagt habe und ich stimme mit Scott überein, müssen Sie dies überarbeiten und die Controller-Klassenroute gehen. Es ist eine gute Übung. –