DOBON.NET DOBON.NETプログラミング掲示板過去ログ

別のフォームが閉じられた事を取得するには?

環境/言語:[WindowsXP、VB.NET]
分類:[.NET]

はじめましてこんばんは。

別のフォームのデータを取得、設定する
http://dobon.net/vb/dotnet/form/accessanotherformdata.html

こちらを読ませてもらいました。
そこで(以下省略)となっているところを教えていただけないでしょうか?
どのようにしてForm2が閉じられたことを取得するのでしょうか?

よろしくおねがいします。
■No5785に返信(PANさんの記事)
> はじめましてこんばんは。
>
> 別のフォームのデータを取得、設定する
> http://dobon.net/vb/dotnet/form/accessanotherformdata.html
>
> こちらを読ませてもらいました。
> そこで(以下省略)となっているところを教えていただけないでしょうか?

あの「以下省略」ってそういう意味じゃないような気がするんだけど...

> どのようにしてForm2が閉じられたことを取得するのでしょうか?
> よろしくおねがいします。

まず、Is Nothingでインスタンス化されているかどうかを確かめた上で、
Disposeされたなりを取得すれば良いのでは?
面倒ならフラグでやれば良いかと。
で、やってみました。

  Private mFormMain As frmMain

  Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    mFormMain = New frmMain ’新たにインスタンスを生成
    mFormMain.Show()     ’表示する
  End Sub

  Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
    If mFormMain Is Nothing Then
      MessageBox.Show("インスタンス化されていない!(閉じられている)")
    ElseIf mFormMain.IsDisposed = True
      MessageBox.Show("オブジェクトが破棄されている!(閉じられている)")
    Else
      MessageBox.Show("インスタンス化されておりオブジェクトも破棄されていない!(開いている)")
    End If
  End Sub
PANさんこんにちは。

少しやり方が違いますが、

Form1からForm2を呼び出すとすると、

Form1

・Form2をイベント付きで宣言する
Private WithEvents frm2 As Form2

・Form2の終了イベントをハンドル取得
Private Sub frmClose() Handles frm2.MClose
End Sub


Form2

・画面を閉じるイベントを宣言
Public Event MClose()

・画面を閉じる前にイベントを発行
RaiseEvent MClose()

これでいけると思います。
java.lang.Nullpoさん回答ありがとうございます。
インスタンスなどの用語の意味を調べて参考にさせてもらいます。
これを使えば新しいフォームが二重に開くのを防ぐのにも使えそうです。

SHさん回答ありがとうございます。
>・Form2をイベント付きで宣言する
このようなことができることを知りませんでした。
この方法を利用させてもらいます。

何を見てもよくわからず悩んでいたところを助けていただき本当にありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板