2017-09-14 17 views
0

私は親ウィンドウと子ウィンドウを持っています。子ウィンドウに保存すると警告メッセージが表示され、okを押します。okを押すと私の子は閉じられ、親は更新されますが、親フォームの前のオブジェクトは引き続きそのままになります。 [更新する前に]古い親ページを閉じるにはどうしたらいいですか?Windowsアプリケーションで子ウィンドウのクローズ時に親ウィンドウをリフレッシュする方法

[OK]をクリックすると、更新された親ページに戻る必要があります。

結論:私は、古い親と新しい親ウィンドウの両方をOKのクリックで取得しています。 OKコードをクリックするだけで

次のように:あなたは、「子ウィンドウ」あなたのウィンドウを呼び出す場合

Me.Close() 'for closing the child window.    
Dim frmparent As Form = New frmDomain 'for opening the parent window with updation. 
frmDomain2.StartPosition = FormStartPosition.CenterScreen 'to open it in center. 
frmDomain2.MdiParent = frmMain 
frmDomain2.Show() 

答えて

0

、あなたは「親ウィンドウ」からそれを呼び出す必要がありました。

あなたの問題を正しく理解していれば、自分のチャイルドを呼び出したときに、最後にリフレッシュ機能を入れて、あなたの子供を宣言する機能のにしてください。すなわち:あなたが親を更新

Dim FrmChild As Form = New ChildForm 
FrmChild .MdiParent = Me 
FrmChild.Show() 

call MyUpdateFormFunction() -- << this will be executed after FrmChild will be closed 
1

方法は、あなたがあなたの子ウィンドウを開く方法、モーダルかモードレスに依存します:

  • モーダル:あなたの子ウィンドウにフォーカスし、ブロック取得親。
    • あなたは子フォームが閉じられるまで、それ以降の行は実行されませんchildForm.ShowDialog()
    • を使用して、それを開く必要があります。このことは、あなたが右ShowDialog()

後、この方法は、あなたのupdateメソッドを呼び出すことができます。

Public Sub SomeMethod() 
    'Code in the parent: 
    Dim childForm as New MyChildForm() 
    childForm.ShowDialog() 
    Me.UpdateParentMethod() 
    'other stuff the parent has to do 
End 
  • モードレス:あなたの子ウィンドウは親をブロックしません。
    • child.Show()を使用して、モードレスとして子を開くことができます。
    • 親では、それ以降の行が実行され、親は通常の方法で実行を継続します。
    • 子フォームが閉じられたことを検出するには、親からOnFormClosedイベントをサブスクライブして、そこにあなたのrefeshコードを実行する必要があります。

この方法:

Public Sub SomeMethod() 
    Dim childForm as New MyChildForm() 
    AddHandler childForm.FormClosed, AddressOf ChildForm_FormClosed 
    childForm.Show() 
    'other stuff the parent has to do 
End 

Public Sub ChildForm_FormClosed(sender as Object, e as FormClosedEventArgs) 
    Me.UpdateParentMethod() 
End 

さらに詳しい情報:

関連する問題