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

変数の初期化について

環境/言語:[WindowsXP VB2008/ActiveReports for .NET 3.0J SP3 ]
分類:[.NET]

印刷ボタン押下時に帳票を印刷するプログラムを作成しています。
ActiveReportsに直接Formの値を渡したいので、Form型のPublic変数を作成し、Meを代入しました。
その値をActiveReportsで参照し、帳票の印刷はできたのですが、その変数を初期化する方法がわかりません。
Dispose→Nothingすると、Disposeの時点で閉じたくないのにFormが閉じてしまいます。
この場合、変数を初期化するにはNothingだけで問題ないのでしょうか?

初歩的な質問で申し訳ありませんが、宜しくお願い致します。


***サンプル***

Public G_frm As Form1

Private Sub F_List_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles F_List.Click

     Dim arp_Report As arp_List  '帳票

     'Form1を代入
     G_frm = Me

     '帳票のインスタンス作成
     arp_Report = New arp_List

     '印刷
     arp_Report.Run(False)
     arp_Report.Document.Print(True, False, False)

     'インスタンスの解放-Form1
     G_frm.Dispose()   'この処理でForm1が終了してしまう。
     G_frm = Nothing      'これだけならForm1は終了しない。
     'インスタンスの解放-帳票
     arp_Report.Dispose()
     arp_Report = Nothing

End Sub
2010/04/01(Thu) 09:09:28 編集(投稿者)


■No26649に返信(ななしのごんべさんの記事)

> この場合、変数を初期化するにはNothingだけで問題ないのでしょうか?

Dispose は必要なくなったインスタンスを破棄するときに用います。
印刷処理後も Form1 を使うのでしたら、この段階で Dispose は呼ぶべきでは
ありません。
なので目的が変数 G_frm に既定値をセットするということであれば
G_frm = Nothing のみで問題ありません。
なるほど。
そういうものなのですね。
ありがとうございました(^^)

■No26651に返信(もりおさんの記事)
> 2010/04/01(Thu) 09:09:28 編集(投稿者)
>
>
> ■No26649に返信(ななしのごんべさんの記事)
>
>>この場合、変数を初期化するにはNothingだけで問題ないのでしょうか?
>
> Dispose は必要なくなったインスタンスを破棄するときに用います。
> 印刷処理後も Form1 を使うのでしたら、この段階で Dispose は呼ぶべきでは
> ありません。
> なので目的が変数 G_frm に既定値をセットするということであれば
> G_frm = Nothing のみで問題ありません。
>
解決済み!

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