/ / Wie kann ich ShowDialog () in einem MDIChild-Formular korrekt anzeigen? - .net, winforms, mdi, showdialog

Wie kann ShowDialog () in einem MDIChild-Formular richtig angezeigt werden? - .net, winforms, mdi, showdialog

Ich habe ein MDIChild-Formular, das ein Dialogfeld anzeigen muss. Ich mache es aktuell so aus der MDichild-Form ...

f.ShowDialog(Me)

Sollte ich verwenden f.ShowDialog(mdiparent)?

Was ist der Unterschied, wenn Sie den Besitzer vor dem Anruf einstellen? ShowDialog()?

Antworten:

3 für die Antwort № 1

Der Unterschied besteht darin, in welchem ​​übergeordneten Element der Dialog liegt. Wenn Sie das übergeordnete Element explizit festlegen, besitzt dieses Fenster den Dialog. Wenn Sie dies nicht festlegen (mit der parameterlosen Version von ShowDialog), besitzt das derzeit aktive Fenster Ihrer Anwendung den Dialog MSDN, übrigens.

Wo dies nützlich ist, ist das Zentrieren Ihres Dialogs, indem Sie die StartPosition-Eigenschaft mithilfe der FormStartPosition.CenterParent-Enumeration festlegen.


4 für die Antwort № 2

Ich bin nicht sicher, ob es sich um einen Zusammenhang handelt, aber ich hatte Probleme mit der Übergabe des Besitzformulars in ShowDialog. Normalerweise mache ich Folgendes:

f.Owner = Me
f.ShowDialog()

0 für die Antwort № 3

Es macht einen Unterschied ...

Ich habe ein MDI-Kind, das ShowDialog (Me) aufruft. Im daraufhin angezeigten Dialogfenster verweist Me.Owner auf den MDI-Container und nicht auf das MDI-Kind.

Die Verwendung von Me.Owner.ActiveControl ist eine Problemumgehung, jedoch mit:

       Dim ContractForm As New Contract(strType, intMode)
ContractForm.Owner = Me
dgrAction = ContractForm.ShowDialog()

Bekommt es schön Im daraufhin angezeigten Dialogfenster verweist Me.Owner jetzt auf das MDI-Kind.

Hoffe das hilft!