2017-06-13 24 views
0

f.ShowDialog(ここでfはfrmEmailのインスタンス)という形式のfrmEmailがあります。MdiParentをShowDialogフォームから設定する

フォームを閉じるときに、frmOrderのインスタンスを開きますが、fOrder.MdiParent = frmMainを設定するにはどうすればよいですか?

frmMainは私のMDIフォームです。frmOrderは私が開く必要があるフォームです。frmEmailは私が開いているフォームです。現時点では

私のコードは

revoke = True 

Dim f As New frmOrder(con, False, False, , orderNum) 
f.MdiParent = ' Not sure what to put here? 
f.Show() 

Me.Close() 

私はfrmMainへの参照を格納する変数に渡す必要がありますでしょうか?それを行う別の方法がありますか?私は前に述べたように、frmEmailf.ShowDialogを使用して開いているので、何MdiParentはありませんので

もちろん、私は、f.MdiParent = Me.MdiParentを使用することはできません。

+0

これは解決策が多すぎる問題です。最も明白なのは、このコードを適切な場所に置いていることです。 ShowDialog()呼び出しの後に属し、DialogResult.Okを返す場合にのみ実行されます。 –

+0

@ HansPassant 'frmOrder'を再オープンする必要があるかどうかを条件にしていたため、そこに置くことができませんでした。 – Harambe

+0

確かに、ShowDialog()の戻り値をチェックする必要があります。 Close()ではなく、Me.DialogResultプロパティを割り当てることで、適切に閉じます。ダイアログは*常に*ダイアログの結果を持つべきです。 –

答えて

0

ShowDialogにフォームを開いて「所有者」プロパティを設定することはできます。 (お使いのMDIフォームはあなたがfrmEmailを開くフォームの親である場合はそうでない場合は、同じように関連し、それを微調整、)

あなたが代わりに f.ShowDialog()を使用してのようにそれを開くと、 frmEmailを開いている、 f.ShowDialog(Me.MdiParent)を使用しています。

このようにしてfrmOrderを開くとMdiParentプロパティをfrmEmailの所有者プロパティに設定します。

Dim f As New frmOrder(con, False, False, , orderNum) 
f.MdiParent = Me.Owner 
f.Show() 
関連する問題