VB.NETフォーム内のすべてのテキストボックスをクリアする

  • C#
  • VB.NET

スポンサーリンク

フォーム内のすべてのテキストボックスをクリアするには、Controls プロパティでコントロールを列挙し、型が TextBoxBase の派生型である場合に Text をクリアすることで可能です。Controls プロパティで列挙されたコントロールの中にさらにコントロールが含まれる場合がありますので、再帰呼び出しが必要となります。

今回は例として「フォーム内のすべてのテキストボックスをクリアする」と書きましたが、これは別に TextBox でなくとも問題ないですし、クリアではなく別の目的に使用することも可能です。

以下のように ClearTextBox メソッドという静的なメソッドを書きます。このメソッドの引数は、親となるコントロールです。フォーム内を探したい場合は、そのフォームのインスタンスを指定します。フォームに限らず、GroupBox などのコントロールを指定することで、GroupBox 内のみを検索することが可能です。

サンプルコード

以下にサンプルコードを示します。

VB.NET 全般
''' --------------------------------------------------------------------------------
''' <summary>
'''     指定したコントロール内に含まれる TextBox の Text をクリアします。</summary>
''' <param name="hParent">
'''     検索対象となる親コントロール。</param>
''' --------------------------------------------------------------------------------
Public Shared Sub ClearTextBox(ByVal hParent As Control)
    ' hParent 内のすべてのコントロールを列挙する
    For Each cControl As Control In hParent.Controls
        ' 列挙したコントロールにコントロールが含まれている場合は再帰呼び出しする
        If cControl.HasChildren Then
            ClearTextBox(cControl)
        End If

        ' コントロールの型が TextBoxBase からの派生型の場合は Text をクリアする
        If TypeOf cControl Is TextBoxBase Then
            cControl.Text = String.Empty
        End If
    Next cControl
End Sub

使用例は以下のようになります。

VB.NET 全般
    ' 現在のフォーム内のすべての TextBox の Text をクリアする
    ClearTextBox(Me)

関連するリファレンス

準備中です。

スポンサーリンク