以前の記事「【VB.NET】フォームに配置されているコントロールを取得する」を応用して、フォームに配置したコントロールの値を初期化する方法について説明する。
前述の記事の方法でコントロールを取得し、コントロールのオブジェクトの型によって、初期化するという方法を採る。
以下、サンプル。
Public Class Form1
 Inherits System.Windows.Forms.Form

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  'フォームオブジェクトを引数として渡すことも可能
  InitControl(Me)
 End Sub

 Private Sub InitControl(ByVal Ctrl As Control)
  For Each CtrlItem As Control In Ctrl.Controls
   If TypeOf CtrlItem Is TextBox Then
    'テキストを空文字にする
    CtrlItem.Text = ""
   ElseIf TypeOf CtrlItem Is RichTextBox Then
    'テキストを空文字にする
    DirectCast(CtrlItem, RichTextBox).Clear()
   ElseIf TypeOf CtrlItem Is ComboBox Then
    '未選択の状態に戻す
    DirectCast(CtrlItem, ComboBox).SelectedIndex = -1
   ElseIf TypeOf CtrlItem Is CheckBox Then
    'チェックを外す
    DirectCast(CtrlItem, CheckBox).Checked = False
   ElseIf TypeOf CtrlItem Is ListBox Then
    'どちらの処理を行うかは状況によって変わる
    'アイテムを全て削除する場合
    'DirectCast(CtrlItem, ListBox).Items.Clear()
    '選択状態を初期化する場合

    DirectCast(CtrlItem, ListBox).ClearSelected()
   End If

   'コントロールに内包されるコントロールがあるか?
   If CtrlItem.Controls.Count > 0 Then
    InitControl(CtrlItem)
   End If
  Next
 End Sub
End Class

【補足事項】
・以前の記事「【VB.NET】フォームに配置されているコントロールを取得する」のサンプルでも、フォームオブジェクトを引数にして渡すことができる。
・変数のデータ型を確認するには、「TypeOf ... Is」を利用する。
 If TypeOf 変数名 Is データ型 Then
  'データ型と一致した場合の処理
 End If
・以下の判定は行わなくても動作する。
 →関数の呼び出し回数を無駄に発生させないためにこの処理を行っている。
 If CtrlItem.Controls.Count > 0 Then
  InitControl(CtrlItem)
 End If
・Panelコントロール等でこのメソッドを実装しておくと、データの初期化が楽になる。
 (読み込んだデータを初期値にする場合等は、読み込んだ値を設定するようにカスタマイズする必要がある)