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
Minimize mehrere Forms gleichzeitig
tbd
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

Minimize mehrere Forms gleichzeitig

beantworten | zitieren | melden

Hallo zusammen,

ich will mit C# in .NET folgendes erreichen:

Beim minimieren der/einer Hauptform sollen alle anderen Forms, welche von der Hauptform erstellt wurden auch minimiert werden. Das gleiche soll auch umgekehrt funktionieren.

Folgendes habe ich bereit schon getestet, hat mich aber nicht zufrieden gestellt


public Form1()
{
    InitializeComponent();
    this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);
}

// bei jedem Button-Klick ein neues Fenster erstellen
private void button1_Click(object sender, EventArgs e)
{
    Form2 f1 = new Form2();
    f1.MinimizeBox = false;
    f1.MaximizeBox = false;
    f1.ShowInTaskbar = false;
    f1.Show();
}

// Sobald das Hauptfenster minimiert wird, werden auch alle weitere
// bekannten Fenster geschlossen
private void Form1_SizeChanged(object sender, System.EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        foreach (Form frm in Application.OpenForms)
            frm.WindowState = FormWindowState.Minimized;
    }

    else if (this.WindowState == FormWindowState.Normal)
    {
        foreach (Form frm in Application.OpenForms)
            frm.WindowState = FormWindowState.Normal;
    }
}

Das Problem hierbei ist, dass zwar alle Fenster minimiert werden, jedoch ist das
a) sehr langsam
b) sind alle Fenster noch klein links unten dargestellt.

Ich hätte gerne, dass ich eine "Haupt"-Form hab, welche dann beliebig viele neue Forms erstellt. Diese neuen Forms haben alle keinen Minimize und Maximize Button. Wenn ich die Hauptform in die Taskbar Minimiere, dann hätte ich gerne, dass alle anderen erzeugten Fenster auch sofort minimiert werden, jedoch OHNE dass diese Fenster noch irgendwo sichtbar sind (weder in der Taskbar noch sonst irgendwo auf dem Desktop).
Zudem sollen alle Fenster (außer das Hauptfenster) zu keiner Zeit in der Windows-Fensterauswahl (ALT + TAB) sichtbar sein.


Viele Grüße, tbd
private Nachricht | Beiträge des Benutzers
spike24
myCSharp.de - Member



Dabei seit:
Beiträge: 443
Herkunft: Steiermark Österreich

beantworten | zitieren | melden

Klingt irgendwie wie ein interessantes Anwendungsgebiet für MDI?
mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1.815
Herkunft: NRW

beantworten | zitieren | melden

Hallo!

Ansonsten hilft dir vielleicht die Hide-Methode für die anderen Fenster.
Und dass diese Fenster nicht in der Taskleiste angezeigt werden, erreicht man mit der Eigenschaft ShowInTaskbar
Nobody is perfect. I'm sad, i'm not nobody
private Nachricht | Beiträge des Benutzers
tbd
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

@spike 24: hab ich vergessen zu erwähnen: Es soll nicht über MDI gelöst werden.
@tom-essen: danke für den Tipp, habs grad auch noch über Visible erreicht.

Jetzt brauch ich nur noch eine Lösung für das Problem: Wie kann ich erreichen, dass bestimmte Forms nicht in der Fenster-Wechsel-Auswahl (ALT + TAB) erscheinen?
private Nachricht | Beiträge des Benutzers
spike24
myCSharp.de - Member



Dabei seit:
Beiträge: 443
Herkunft: Steiermark Österreich

beantworten | zitieren | melden

Du könntest die Property "ShowInTaskbar" probieren.
mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen
private Nachricht | Beiträge des Benutzers
tbd
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

wenn ich "showInTaskbar" auf "false" setzte, dann wird das Fenster zwar nicht in der Taskbar angezeigt, trotzdem bekomm ich es zur Auswahl, wenn ich über ALT+TAB ein anderes Fenster auswähle.
private Nachricht | Beiträge des Benutzers
koller
myCSharp.de - Member



Dabei seit:
Beiträge: 142

beantworten | zitieren | melden

Hallo,

wenn die Forms eh keinen Minimieren/Maximieren-Button haben sollen, kannst du doch FormBorderStyle=SizableToolWindow verwenden.

Grüße, Koller.
private Nachricht | Beiträge des Benutzers
tbd
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Vielen Dank, jetzt hab ich erst mal, was ich brauche.

Allerdings frage ich mich noch ob es vllt. auch eine Möglichkeit gibt, dass die Funktionalität der "Form1_SizeChanged"-Funktion in der Main-Form automatisch vom Framework übernommen wird. Kann so was vllt. über eine Vater-Kind-Beziehung zwischen den Forms erreicht werden (Ich mein mit Borland C++ war das irgendwie möglich)?

Ich würde gerne vermeiden, dass ich in der Main-Form in einer Schleife über alle "OpenForms" iterieren muss.
private Nachricht | Beiträge des Benutzers
koller
myCSharp.de - Member



Dabei seit:
Beiträge: 142

beantworten | zitieren | melden

Hallo,

wie wäre es mit der Form.Owner-Eigenschaft?
Zitat
When a form is owned by another form, it is minimized and closed with the owner form

Grüße, Koller.
private Nachricht | Beiträge des Benutzers
tbd
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Prima, genau das hab ich gesucht, vielen Dank!
private Nachricht | Beiträge des Benutzers