Laden...

Prüfen ob eine Form bereits offen ist (Schleifenfehler?)

Erstellt von caoimhin vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.322 Views
C
caoimhin Themenstarter:in
34 Beiträge seit 2010
vor 13 Jahren
Prüfen ob eine Form bereits offen ist (Schleifenfehler?)

Hallo mal wieder,

ich arbeite immer noch an meiner kleinen MDI Anwendung und stoße nun an ein weiteres Problem. Beim öffnen einer Form soll immer erst geprüft werden ob diese offen ist. Folglich habe ich im Netz und Forum hier gesucht und bin auch mehr oder weniger fündig geworden.

Meine Schleife sieht nun so aus :


private void Kundenbtn_Click(object sender, EventArgs e)
        {
         //   Kunden Kunde = new Kunden();

            foreach (Kunden frm in this.MdiChildren)
            {
                if (frm.GetType() == frm.GetType())
                    frm.Focus();
                return;
            }
            Kunden Kunde = new Kunden();
            Kunde.MdiParent = Main.ActiveForm;
            Kunde.Show();
        }

Das problem ist nun das diese Schleife überhaupt keinen effekt hat und ich mich frage wieso? Also die Forms öffnen sich so als wenn keine Schleife vorhanden wäre.
Da ich immer noch Neuling bin was wohl unschwer zu erkennen ist würde ich gerne einen Tip bekommen wo das problem liegt? Irgendwo in der Schleife 😉 Das weiß ich wohl 😃

Vielen dank schon mal im vorraus

Kevin

Das hoffen wir alle

1.373 Beiträge seit 2004
vor 13 Jahren

Zwei Sachen fallen mir auf:

  1. frm.GetType() == frm.GetType() ist immer true. Was willst du hier erreichen?
  2. Wenn MdiChildren nicht leer ist, wird die Methode immer nach dem ersten Schleifendurchlauf verlassen dank des return Statements.
49.485 Beiträge seit 2005
vor 13 Jahren

Hallo caoimhin,

im Prinzip das gleiche Problem und die gleiche Lösung, wie in Button wieder aus einer GroupBox entfernen..., nur dass es bei dir nicht darum geht, ein bestimmtes Objekt zu entfernen, sondern zu ermitteln, ob es ein bestimmtes Objekt schon gibt. Auch du musst dir einfach die richtigen Objekte merken, um diese Frage beantworten zu können. Entscheiden kann man das mit einer Abfrage auf != null. Wenn sich das Fenster schließen lässt, musst du die Variable natürlich wieder auf null setzen. Siehe dazu Form.FormClosing/Form.Closed.

herbivore