3

ダイアログを表示する必要がある MDIChild フォームがあります。私は現在、mdichildフォーム内からこのようにやっています...

f.ShowDialog(Me)

を使用する必要がありf.ShowDialog(mdiparent)ますか?

呼び出す前に所有者を設定するときの違いは何ShowDialog()ですか?

4

3 に答える 3

4

これが関連しているかどうかはわかりませんが、ShowDialogで所有フォームを渡す際に問題が発生しました。通常、次のようにします。

f.Owner = Me
f.ShowDialog()
于 2009-01-28T22:29:37.977 に答える
3

違いは、どちらの親がダイアログを所有しているかです。親を明示的に設定すると、そのウィンドウがダイアログを所有します。設定しない場合 (ShowDialog のパラメータなしバージョンを使用)、アプリケーションの現在アクティブなウィンドウがダイアログを所有します。それはMSDNにあります。

これが役立つのは、FormStartPosition.CenterParent 列挙体を使用して StartPosition プロパティを設定することにより、ダイアログを中央に配置する場合です。

于 2009-02-11T15:22:16.840 に答える
0

それは違いを生む...

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 子を参照するようになりました。

お役に立てれば!

于 2015-09-10T16:13:55.887 に答える