Sie können in eine echte Sauerei geraten, wenn ein Formular ein anderes steuert, es sei denn, es gibt eine bestimmte Eltern/Kind-Beziehung.
Ich würde vorschlagen, dass Sie ein einzelnes steuerndes Objekt, z. eine FormController-Klasse (das ist etwas, was Sie selbst erstellen würden) und lassen Sie die Präsentation Ihrer beiden Formulare von dort aus steuern.
Neben der Ordnung der Beziehung zwischen Ihren Objekten erhalten Sie eine bessere Single-Responsibility-Mapping - was ich damit meine, ist es sollte nicht die Verantwortung einer Form, um eine andere zu kontrollieren. Wenn eine Aktion für ein Formular ausgeführt wird, wird stattdessen einfach ein Ereignis ausgelöst, um jedem mitzuteilen, dass die Aktion stattgefunden hat. Wenn es niemanden interessiert, dann ist das das Ende, aber in diesem Fall würde ein FormController sein Interesse für das Ereignis registrieren, und wenn er ausgelöst würde, wäre es die Aufgabe des Fenstercontrollers, dieses Ereignis anzuhören und entsprechend zu behandeln, dh in diesem Fall, der die Sichtbarkeit/Existenz eines anderen Formulars beeinflusst.
Hier ist ein sehr grobes Beispiel dafür, was ich meine:
public class FormController
{
private readonly WhatsappForm whatsappForm = new WhatsappForm();
private readonly LoginForm loginForm = new LoginForm();
public FormController()
{
loginForm.SomeActionPerformed += HandleLoginActionPerformed;
}
private void HandleLoginActionPerformed(object sender, EventArgs e)
{
whatsappForm.Show();
}
}
Wo SomeActionPerformed eine Veranstaltung der Login-Formular angehoben ist, so:
partial class LoginForm
{
...
public event EventHandler SomeActionPerformed;
}
Google ist dein Freund :) – Missy