Entwickler-Ecke
WinForms - Fenster in der Hauptanwendung minimieren
Talemantros - Di 11.11.14 23:12
Titel: Fenster in der Hauptanwendung minimieren
Hallo zusammen,
ich habe ein WinForm als Hauptanwendung mit einer Menüleiste aus der heraus die anderen Forms aufgerufen werden.
Diese sind TopMost und haben ShowInTasbar = false
Wenn ich nun aber die Hauptanwendung minimiere, bleibt ein bereits geöffnetes Fenster stehen.
Das ist irgendwie nicht so schön.
Wie kann ich das beheben?
Gruß
Daniel
C# - Di 11.11.14 23:54
Hallo,
Ich nehme mal an das deine "Hauptanwendung"
kein MdiContainer ist, denn sonst würde es automatisch gehen.
Im anderen Fall fällt mir spontan ein das Resize Event der Hauptanwendung abzufangen und dann die WindowStates gleichsetzen, also:
C#-Quelltext
1: 2: 3: 4:
| void Hauptanwendung_Resize(object sender, EventArgs e) { deineUnterForm.WindowState = Hauptanwendung.WindowState; } |
Talemantros - Mi 12.11.14 16:32
Hey C#,
ich muss mal doof nachfragen, was ein MidiContainer ist und wie ich einen nutzen würde etc.
Den anderen Quellcode teste ich mal mit dem Resize abzufangen.
Danke
Gruß
Daniel
Blöd dabei wäre nur, dass ich ja nie weiß welche Unterform gerade geöffnet ist.
Dan muss ich noch mal schauen, wie man alle geöffneten Forms ausliest.
Ralf Jansen - Mi 12.11.14 19:09
Zitat: |
Diese sind TopMost und haben ShowInTasbar = false
Wenn ich nun aber die Hauptanwendung minimiere, bleibt ein bereits geöffnetes Fenster stehen.
Das ist irgendwie nicht so schön. |
Wenn die Formen unabhängig sind wie würdest du denn eine minimiertes Fenster wieder anzeigen wenn es nicht in der Taskbar ist?
Darum landen solche Fenster auch in einer Desktopecke (nur Fenster Header mit Systemmenü) damit man di eauch wieder Maximieren kann. Das will man üblicherweise auch nicht oder man denkt beim Wort "Classic Look" an Windows 3.1. Dann mag man das vielleicht.
Wenn du die anderen Fenster abhängig von der Mainform machen willst solltest du die MainForm auch beim aufrufen von Show oder ShowModal der anderen Formen als Owner mit übergeben.
C# - Mi 12.11.14 21:50
Mal abgesehen das Ralf recht hat: ein
MdiContainer kann andere WinForms beinhalten. Erstelle dir einfach mal eine Form und setzte die
IsMdiContainer Egenschaft auf
true.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| class Hauptform : Form { Form2 unterform;
public Hauptform() { IsMdiContainer = true; unterform = new Form2{ Parent = this }; unterform.Show(); } } |
Probiere es einfach mal, dann siehst du es ja.
Ralf Jansen - Mi 12.11.14 23:27
Zitat: |
C#-Quelltext 1: 2:
| unterform = new Form2{ Parent = this }; unterform.Show(); | |
Sieht ungewöhnlich aus. Den Owner kann man einfach beim Show übergeben.
C#-Quelltext
1: 2:
| unterform = new Form2(); unterform.Show(this); |
Oder wolltest du MdiParent setzen und nicht Parent?
C# - Do 13.11.14 00:25
Hoppla :mrgreen:
Habe da zwei Sachen zusammengewürfelt.
Entweder
C#-Quelltext
1: 2:
| unterform = new Form2(); unterform.Show(this); |
oder
C#-Quelltext
1: 2: 3:
| IsMdiContainer = true; unterform = new Form2{ MdiParent = this }; unterform.Show(); |
Talemantros - Sa 15.11.14 13:39
Hey,
entschuldigt die späte Rückmeldung.
Meine Chefin kam auf die Idee mich kurzfristig zu einem Plenum zu schicken.
Wlan und mobiles Netz ganz grottig.
Ich teste das aus und danke schon mal vielmals.
Gruß
Daniel
Schönes WOchenende
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!