Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Di 11.11.14 23:12 
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#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
void Hauptanwendung_Resize(object sender, EventArgs e)
{
    deineUnterForm.WindowState = Hauptanwendung.WindowState;
}

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: 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.
ausblenden 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.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 12.11.14 23:27 
Zitat:
ausblenden C#-Quelltext
1:
2:
unterform = new Form2{ Parent = this };
unterform.Show();


Sieht ungewöhnlich aus. Den Owner kann man einfach beim Show übergeben.

ausblenden C#-Quelltext
1:
2:
unterform = new Form2();
unterform.Show(this);


Oder wolltest du MdiParent setzen und nicht Parent?
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Do 13.11.14 00:25 
Hoppla :mrgreen:
Habe da zwei Sachen zusammengewürfelt.
Entweder
ausblenden C#-Quelltext
1:
2:
unterform = new Form2();
unterform.Show(this);

oder
ausblenden C#-Quelltext
1:
2:
3:
IsMdiContainer = true;
unterform = new Form2{ MdiParent = this };
unterform.Show();

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: 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