2012-03-31 16 views
0

Wie kann ich eine schwarze Form als Hintergrund haben und einige Modalformen nacheinander geöffnet, deren Besitzer die schwarze Form ist? Ich brauche diese beiden, um ihre Reihenfolge zusammen zu halten (wenn minimiert und maximiert), deshalb habe ich die modale Form gewählt.Ein modales Formular mit einem Elternformular als Hintergrund

Ich habe ein einfaches Hauptformular mit schwarzem Hintergrund erstellt und ein Formular im Dialog (modal) geöffnet. Das Hauptformular bietet einen schwarzen Hintergrund für mich und die modale Form bleibt vor dem schwarzen Hintergrund. Aber beim Öffnen neuer Formulare kann ich den Besitzer des neuen modalen Formulars nicht auf die oben erwähnte schwarze Form setzen. Ich habe versucht, das schwarze Formularobjekt zu übergeben und auch Ereignisse ohne Erfolg zu registrieren.

Kennen Sie einen Mechanismus das folgende Szenario zu implementieren:

Eine schwarze Form als Hintergrund und einer Reihe von modalen Formen einer nach dem anderen vor dem schwarzen in einer Art und Weise geöffnet, dass die schwarze Form ist der Besitzer jeder modalen Form.

Dank

bearbeiten

Bitte beachten Sie, dieses Szenario: Ich habe drei Formen genannt frmBlack, Form1 und Form2. Ich benutze frmBlack als Haupt geschwärzten Form. Nach dem Platzieren einer Schaltfläche in diesem Formular rufe ich das Form1Object.ShowDialog (this) auf. Nun nehme ich an, dass ich zum dritten Formular (Form2) navigieren möchte, das heißt, ich muss das Form1Object schließen. Ich setze eine Schaltfläche auf das zweite Formular (Form1) und wenn diese Schaltfläche gedrückt wird, muss ich das Form1-Objekt schließen und navigieren zu dem Form2Object, während sein Besitzer in der ShowDialog() - Funktion auf FrmBlack festgelegt werden muss.

+1

machen sie mit Showdialog (Inhaber) modal nicht viel Sinn machen. Verwenden Sie stattdessen Show (Eigentümer). –

+0

Es macht es nicht modal, ich brauche die beiden zusammen zu halten! Ich kann später eine einfache Demo versuchen, um meine Bedürfnisse zu klären. –

+1

Ein eigenes nicht modales Fenster wird immer über dem Besitzer angezeigt. Das ist so klebrig, wie du es brauchen solltest. Wenn du es * auch * auf den Besitzer beschränken willst, dann brauchst du MDI. –

Antwort

0

Eltern oder Besitzer? Das ist ein Unterschied. Eltern wird nur in MDI-Anwendungen verwendet (siehe Luigis Beitrag). Der Besitzer kann in den Anruf auf ShowDialog(owningForm) festgelegt werden.

Was möchten Sie erreichen?

hth

Mario

+0

Besitzer ist was ich will. Ich möchte nicht mit dem Malen des MDI-Formulars, wie in diesem Post angegeben, zu tun haben: http: //stackoverflow.com/questions/1190395/how-to-remove-gray-background-on-mdi-parent-form –

+0

To erreichen, was Sie wollen, setzen Sie den Besitzer im Aufruf von ShowDialog (das wäre Ihr Hintergrundfenster. So mache ich es. –

+0

Bitte beachten Sie meinen Kommentar –

0

Um das zu erreichen, was Sie mit dem zweiten Taste Postpaket an die frmBlack aus dem Fenster wollen und lassen Sie es die Arbeit machen. Oder genauer gesagt setzen Sie eine Flagge innerhalb der frmBlack, da in frm1.btnShowNextForm Sie frm1 schließen müssen ...

Und auch einen Blick auf Form.Owner

so etwas in dieser Richtung in frm1.buttonShowNextFormClicked()

{ 
    if (null != Owner) 
    { 
     FrmBlack frmBlackLocal = Owner as FrmBlack; 

     if (null != frmBlackLocal) 
     { 
     frmBlackLocal.NextAction = FrmBLack.NextActions.ShowForm2; //an enum 
     } 
    } 

    Close(); 
} 

und in frmBlack

{ 

    frm1.ShowDialog(this); 

    if (NextAction == NextActions.ShowForm2) 
    { 
     frm2.ShowDialog(this); 
    } 
} 

Nun nehmen, natürlich braucht es einige Pinsel-up (wie das Extrahieren des nächsten Handlers in einer eigenen Funktion, aber Sie sollten die Idee haben:

hth

Mario

Verwandte Themen