Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Formverwaltung: Bereits geöffnete Fenster wieder in den Vordergrund bringen
Perhalo
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

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

beantworten | zitieren | melden

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);
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3790
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Zitat
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
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

Moderationshinweis von herbivore (05.01.2012 - 13:47:19):

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.

private Nachricht | Beiträge des Benutzers
Perhalo
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

beantworten | zitieren | melden

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
Fehler
InvalidOperationException : Das anzuzeigende Formular ist bereits sichtbar.
private Nachricht | Beiträge des Benutzers
Lennart
myCSharp.de - Member



Dabei seit:
Beiträge: 429
Herkunft: Bawü

beantworten | zitieren | melden

Zitat von Perhalo
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.
Zitat von Perhalo
Fehler
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();
}
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers