Ich hab mal eine kleine und einfache (vielleicht nicht ganz schöne) Lösung dafür “gefunden” um den Mehrfachaufruf eines Fensters zu verhindern. (nicht mit ShowDialog()):


Bricht das Schliessen der Form (während dem Schliessens) ab und “versteckt” die Form anstatt sie zu schliessen.

private void ChildForm_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
}

In der ParentForm darf man dann die ChildForm nicht mehr mit dem Schlüsselwort NEW (Wird verwendet, um Objekte zu erstellen und Konstruktoren aufzurufen.) aufrufen.

private void button_Click(object sender, EventArgs e)
{
if (f != null)
{
f.Show();

return;
}

f = new ChildForm();
f.Show();
}