- PR -

フォームの生命期について

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/07/19
投稿数: 15
投稿日時: 2005-10-06 17:30
public void ShowForm() {
Form2 cForm = new Form2();
cForm.Show();
}
このメソッドは毎回呼び出された、新しいフォームを表示する。ても、ShowForm()を実行した後で、cFormの生命期は終わりだった。どうしてフォームは表示していく?フォームのインスタンスはどこに保存している? フォームのインスタンスはどうすると取れる?

[ メッセージ編集済み 編集者: 未記入 編集日時 2005-10-06 18:08 ]
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-10-06 17:42
お世話になります。

こちらが参考になると思います。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22671&forum=7
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-06 17:54
こんにちは、じゃんぬ です。

引用:

未記入さんの書き込み (2005-10-06 17:30) より:

どうしてフォームは表示していく?フォームのインスタンスはどこに保存している?


スコープを抜けているだけで、インスタンスは存在します。
つまり、変数のスコープを抜けてその変数を通して参照できなくなるだけです。
参照の寿命とインスタンス自体の寿命は別ということです。

Show メソッドで表示された Form は、Close されれば Dispose されます。
ShowDialog メソッドの場合は、しっかりと Dispose してあげてくださいね。

コード:

Dim hForm As Form1

Try
    hForm = New Form1()
    hForm.ShowDialog()
Finally
    If Not hForm Is Nothing Then
        hForm.Dispose()
    End If
End Try


引用:

フォームのインスタンスはどうすると取れる?


表示する際に変数に参照を取っておくのが一般的ですよね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)