VB.NET Tips - フォームクラスにプロパティ宣言し外部からアクセスする方法

あるフォームから別のフォームを表示し、その子フォームでの情報を親のフォームからアクセスしたい場合に、 子フォームにプロパティを持ち、それを介してデータのやり取りを行います。

以下の例では、親フォーム上のチェックボックスのチェック状態を、子フォームのチェックボックスに設定し、 子フォームを閉じた後で、子フォーム上のチェックボックスのチェック状態を親フォームに再度表示します。

以下の画像は、親のフォームでチェックボックスをONにして、子フォームを表示した様子です。

以下のソースは、子フォームの中に「チェック状態プロパティ」を宣言し、 処理的には「チェック状態退避値」に値を設定・取得しています。
フォームロード時に「チェック状態退避値」の値をフォーム上のチェックボックスに設定し、 「終了」ボタン押下時にはチェックボックスの状態を「チェック状態退避値」に退避しています。

プロパティを持つ子フォームのクラス

01''' <summary>
02''' プロパティを持つ子フォーム
03''' </summary>
04Public Class frmProperty
05 
06    'チェック状態退避値
07    Private mblnChkStatus As Boolean = False
08 
09    ''' <summary>
10    ''' チェック状態プロパティ
11    ''' </summary>
12    ''' <value>チェック状態の設定値</value>
13    ''' <returns>チェック状態を返す</returns>
14    Public Property ChkStatus As Boolean
15        Set(value As Boolean)
16            mblnChkStatus = value   '退避値に設定
17        End Set
18        Get
19            Return mblnChkStatus    '退避値を返す
20        End Get
21    End Property
22 
23    ''' <summary>
24    ''' ボタンクリックイベント
25    ''' </summary>
26    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
27        'チェックボックスの状態を退避
28        Me.mblnChkStatus = Me.CheckBox1.Checked
29        '自分を閉じる
30        Me.Close()
31    End Sub
32 
33    ''' <summary>
34    ''' フォームロードイベント
35    ''' </summary>
36    Private Sub fomProperty_Load(sender As Object, e As EventArgs) Handles Me.Load
37        'チェックボックスの初期状態設定
38        Me.CheckBox1.Checked = Me.mblnChkStatus
39    End Sub
40 
41End Class

この子フォームを呼出す親フォームの処理が以下の様になります。

子フォームを呼出す親フォームの処理

01''' <summary>
02''' 子フォームを呼出す親フォーム
03''' </summary>
04Public Class frmPropMain
05 
06    ''' <summary>
07    ''' ボタンクリックイベント
08    ''' </summary>
09    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
10        'プロパティテストウインドウ生成
11        Dim frmProp As New frmProperty
12        'プロパティに自分のチェックボックスの値を設定
13        frmProp.ChkStatus = Me.CheckBox1.Checked
14        'ウインドウ表示
15        frmProp.ShowDialog()
16        'プロパティ値を自分のチェックボックスの値に設定
17        Me.CheckBox1.Checked = frmProp.ChkStatus
18        'プロパティテストウインドウ廃棄
19        frmProp.Dispose()
20        frmProp = Nothing
21    End Sub
22 
23End Class

ボタンクリックイベントでは、子ウインドウのオブジェクトを生成し、 子ウインドウのプロパティに自分自身の上のチェックボックスの状態を設定し、 ダイアログウインドウとして子ウインドウを表示します。

子ウインドウの表示終了後、子ウインドウを廃棄せずにプロパティを取得し、 自分自身の上のチェックボックスの状態に設定し直しています。

ここで重要なのは、子ウインドウのオブジェクトを廃棄する前にプロパティにアクセスすることです。 子ウインドウのオブジェクトを廃棄するとアクセスは不可能になります。

総アクセス数