Laden...

Formverwaltung: Bereits geöffnete Fenster wieder in den Vordergrund bringen

Erstellt von Perhalo vor 12 Jahren Letzter Beitrag vor 12 Jahren 4.303 Views
Thema geschlossen
P
Perhalo Themenstarter:in
22 Beiträge seit 2012
vor 12 Jahren
Formverwaltung: Bereits geöffnete Fenster wieder in den Vordergrund bringen

Hi,

ich bastele jetzt schon etwas länger an einem größerem Programm herum. Dabei wird ein MainFrm geöffnet. Dieses bleibt die ganze Laufzeit aktiv. Von diesem MainFrm sollen sich mit F-Tasten UnterFrms öffnen lassen. Diese können sichtbar bleiben, wenn andere geöffnet werden. Allerdings kommen die neu geöffneten immer in den Vordergrund.

Dies funktioniert auch schon. Was ich allerdings noch möchte, ist das bereits geöffnete Fenster wieder in den Vordergrund geholt werden. Einfache Methoden wie z.B. BringToFront haben irgendwie nicht funktioniert.
Ich wäre über jede Hilfe sehr dankbar!

Die Abfrage erfolgt bisher folgendermaßen:

            if (this.UserLogin == null)
                this.UserLogin = new UserLoginFrm();
            if (!this.UserLogin.Visible)
                this.UserLogin.ShowDialog(this);

3.825 Beiträge seit 2006
vor 12 Jahren

Was ich allerdings noch möchte, ist das bereits geöffnete Fenster wieder in den Vordergrund geholt werden.

Wann soll das Fenster in den Vordergrund ? Wenn das Unterfenster geschlossen wird ?

Das ist doch so Standard, da braucht man nichts zu programmieren. Bei mir sieht das im Main-Programm so aus :

// User-Login modal öffnen
UserLoginFrm dlg = new UserLoginFrm();
dlg.ShowDialog();
string user = dlg.User;
string pw = dlg.Password;

...

// Adressverwaltung nicht modal öffnen
AddressesFrm dlg = new AddressesFrm();
dlg.Show();

Grüße Bernd

Hinweis von herbivore vor 12 Jahren

Modale Dialoge (ShowDialog) sind out, siehe Warten auf Schließen einer anderen Form [und warum man Dialoge nicht modal machen sollte]. Im konkreten Fall kommt ShowDialog schon deshalb nicht in Frage, weil es mehrere Unterforms geht, die gleichzeitig offen seinen können.

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

P
Perhalo Themenstarter:in
22 Beiträge seit 2012
vor 12 Jahren

z.B. beim Tastendruck F11 (welcher das Fenster geöffnet hat) soll das Fenster wieder ganz in den Vordergrund rücken, nachdem andere Steuerungsmenüs aufgerufen wurden ohne das Login-Menü zu schließen.

Ich denke ein Problem dabei ist folgende Exception

Fehlermeldung:
InvalidOperationException : Das anzuzeigende Formular ist bereits sichtbar.

L
416 Beiträge seit 2008
vor 12 Jahren

Einfache Methoden wie z.B. BringToFront haben irgendwie nicht funktioniert.

Und was heißt "irgendwie nicht funktioniert"? Bei mir funktioniert BringToFront genau so wie du es gern hättest.

Fehlermeldung:
InvalidOperationException : Das anzuzeigende Formular ist bereits sichtbar.

Du kannst auch nicht ShowDialog auf ein schon geöffnetes Formular aufrufen aber das sagt die Fehlermeldung ja selbst.
Poste bitte mal etwas mehr relevanten Code und beschreib dein Problem genau.

Ansonsten, so funktioniert es bei mir:


FormConfig fc;
private void pictureBoxConfig_Click(object sender, EventArgs e)
{                                                      
     if (fc == null)
     {
           fc = new FormConfig(_Core);
           fc.Show();
      }
      else
           fc.BringToFront();
}
49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Perhalo,

und wenn alle Stricke reißen, dann gehts mit Win32 SetForgroundWindows.

Davon abgesehen wurde das Thema wurde schon oft besprochen. Bitte benutze bei Bedarf die Forumssuche.

herbivore

Thema geschlossen