Autor Beitrag
lightsaver
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24


C# (VS 2008 Prof.)
BeitragVerfasst: So 13.07.08 22:43 
Hi,

ich habe ein Problem mit showdialog() und finde einfach keine Lösung bzw. einen Grund, was genau falsch ist.

Ich habe ein MDI-Form (Mainform). In diesem habe ich ein weiteres Form (Form2) erstellt. Wenn ich nun von Form2 aus ein Form3 modal (mit showdialog) anzeigen lassen will, dann bekomme ich folgende Fehlermeldung:

Das Formular, das sich nicht auf der obersten Ebene befindet, kann nicht als modales Dialogfeld angezeigt werden. Entfernen Sie das Formular aus allen übergeordneten Formularen, bevor Sie showDialog aufrufen.

Ich konnte irgendwie nicht so wirklich Informationen finden, was hier mit oberste Ebene gemeint ist. Mir ist nicht so ganz klar, welche Fenster nun dazugehören und wieso ich hier, bei nur einem angezeigten Fenster in dem MDI-Container, trotzdem scheinbar nicht auf der obersten Ebene bin.
Welche Möglichkeiten habe ich, den beschriebenen Ablauf modal umzusetzen?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 13.07.08 22:52 
Kannst Du ein bisschen Quellcode zeigen? Ich habe gerade mal folgendes probiert: Eine Form1 als MDIContainer und eine Form2, welche sich selber als Dialog anzeigen kann:

Beim Laden von Form1 wird eine Form2 als MDI-Child angezeigt.
ausblenden C#-Quelltext
1:
2:
3:
4:
        private void Form1_Load(object sender, EventArgs e)
        {
            (new Form2() { MdiParent = this }).Show();
        }


Wenn ich dieser Form2 auf einen Button klicke, soll sie eine weitere Form2 als Dialog anzeigen:
ausblenden C#-Quelltext
1:
2:
3:
4:
        private void button1_Click(object sender, EventArgs e)
        {
            (new Form2()).ShowDialog();
        }


Und das klappt auch :nixweiss:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
lightsaver Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24


C# (VS 2008 Prof.)
BeitragVerfasst: So 13.07.08 23:31 
Danke für die schnelle Hilfe, dein Code hat mich bereits auf den richtigen Weg gebracht.

Ich mache eigentlich genau das gleiche mache wie du, mit einem kleinen, aber scheinbar entscheidenden Unterschied.

ausblenden C#-Quelltext
1:
2:
3:
FormContactList fcl = new FormContactList();
fcl.MdiParent = this.MdiParent;
fcl.ShowDialog(this);


So war es zuerst. Mit dem Auskommentieren der Zeile fcl.MdiParent = this.MdiParent; kam die Fehlermeldung nicht mehr.

Leider scheint es nicht möglich zu sein, innerhalb von MDI-Containern etwas modal anzuzeigen. Das wäre zwar an sich schöner aber nachdem ich nun wusste, wonach genau ich suchen musste, habe ich festgestellt, dass ich mit dem ja eher kosmetischen Fehler wohl leben muss.