VB.NET Tips - フォームクラスにプロパティ宣言し外部からアクセスする方法
あるフォームから別のフォームを表示し、その子フォームでの情報を親のフォームからアクセスしたい場合に、
子フォームにプロパティを持ち、それを介してデータのやり取りを行います。
以下の例では、親フォーム上のチェックボックスのチェック状態を、子フォームのチェックボックスに設定し、
子フォームを閉じた後で、子フォーム上のチェックボックスのチェック状態を親フォームに再度表示します。
以下の画像は、親のフォームでチェックボックスをONにして、子フォームを表示した様子です。

以下のソースは、子フォームの中に「チェック状態プロパティ」を宣言し、
処理的には「チェック状態退避値」に値を設定・取得しています。
フォームロード時に「チェック状態退避値」の値をフォーム上のチェックボックスに設定し、
「終了」ボタン押下時にはチェックボックスの状態を「チェック状態退避値」に退避しています。
プロパティを持つ子フォームのクラス
01 | ''' <summary> |
02 | ''' プロパティを持つ子フォーム |
03 | ''' </summary> |
04 | Public 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 |
41 | End Class |
この子フォームを呼出す親フォームの処理が以下の様になります。
子フォームを呼出す親フォームの処理
01 | ''' <summary> |
02 | ''' 子フォームを呼出す親フォーム |
03 | ''' </summary> |
04 | Public 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 |
23 | End Class |
ボタンクリックイベントでは、子ウインドウのオブジェクトを生成し、
子ウインドウのプロパティに自分自身の上のチェックボックスの状態を設定し、
ダイアログウインドウとして子ウインドウを表示します。
子ウインドウの表示終了後、子ウインドウを廃棄せずにプロパティを取得し、
自分自身の上のチェックボックスの状態に設定し直しています。
ここで重要なのは、子ウインドウのオブジェクトを廃棄する前にプロパティにアクセスすることです。
子ウインドウのオブジェクトを廃棄するとアクセスは不可能になります。