ダイアログを表示する必要がある MDIChild フォームがあります。私は現在、mdichildフォーム内からこのようにやっています...
f.ShowDialog(Me)
を使用する必要がありf.ShowDialog(mdiparent)ますか?
呼び出す前に所有者を設定するときの違いは何ShowDialog()ですか?
ダイアログを表示する必要がある MDIChild フォームがあります。私は現在、mdichildフォーム内からこのようにやっています...
f.ShowDialog(Me)
を使用する必要がありf.ShowDialog(mdiparent)ますか?
呼び出す前に所有者を設定するときの違いは何ShowDialog()ですか?
これが関連しているかどうかはわかりませんが、ShowDialogで所有フォームを渡す際に問題が発生しました。通常、次のようにします。
f.Owner = Me
f.ShowDialog()
違いは、どちらの親がダイアログを所有しているかです。親を明示的に設定すると、そのウィンドウがダイアログを所有します。設定しない場合 (ShowDialog のパラメータなしバージョンを使用)、アプリケーションの現在アクティブなウィンドウがダイアログを所有します。それはMSDNにあります。
これが役立つのは、FormStartPosition.CenterParent 列挙体を使用して StartPosition プロパティを設定することにより、ダイアログを中央に配置する場合です。
それは違いを生む...
ShowDialog(Me) を呼び出す MDI 子があり、結果のダイアログ ウィンドウで、Me.Owner は MDI 子ではなく MDI コンテナーを参照します。
Me.Owner.ActiveControl を使用することは回避策ですが、以下を使用します。
Dim ContractForm As New Contract(strType, intMode)
ContractForm.Owner = Me
dgrAction = ContractForm.ShowDialog()
よくわかります。結果のダイアログ ウィンドウで、Me.Owner は MDI 子を参照するようになりました。
お役に立てれば!