Question

J'ai un formulaire MDIChild qui doit afficher une boîte de dialogue. Je le fais actuellement comme ça depuis l'intérieur de la forme mdichild ...

f.ShowDialog(Me)

Devrais-je utiliser f.ShowDialog(mdiparent)?

Quelle est la différence lorsque vous définissez le propriétaire avant d'appeler ShowDialog()?

Était-ce utile?

La solution

La différence réside dans le fait que le parent est propriétaire du dialogue. Si vous définissez explicitement le parent, cette fenêtre est propriétaire du dialogue. Si vous ne le définissez pas (avec la version sans paramètre de ShowDialog), la fenêtre active de votre application est propriétaire de la boîte de dialogue. Cela se trouve sur MSDN , btw.

Cela peut être utile pour centrer votre dialogue en définissant la propriété StartPosition à l'aide de l'énumération FormStartPosition.CenterParent.

Autres conseils

Je ne suis pas sûr que cela soit lié, mais j'ai eu quelques problèmes pour passer le formulaire de propriétaire dans ShowDialog, je le fais habituellement:

f.Owner = Me
f.ShowDialog()

Cela fait une différence ...

J'ai un enfant MDI qui appelle ShowDialog (Me) et, dans la boîte de dialogue résultante, Me.Owner fait référence au conteneur MDI, pas à l'enfant MDI.

Utiliser Me.Owner.ActiveControl est une solution de contournement, mais en utilisant:

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

Obtient bien. Dans la fenêtre de dialogue résultante, Me.Owner fait maintenant référence à l’enfant MDI.

J'espère que ça aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top