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

スポンサーリンク

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

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

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

サンプルコード

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

C# 全般
/// --------------------------------------------------------------------------------
/// <summary>
///     指定したコントロール内に含まれる TextBox の Text をクリアします。</summary>
/// <param name="hParent">
///     検索対象となる親コントロール。</param>
/// --------------------------------------------------------------------------------
public static void ClearTextBox(Control hParent) {
    // hParent 内のすべてのコントロールを列挙する
    foreach (Control cControl in hParent.Controls) {
        // 列挙したコントロールにコントロールが含まれている場合は再帰呼び出しする
        if (cControl.HasChildren == true) {
            ClearTextBox(cControl);
        }

        // コントロールの型が TextBoxBase からの派生型の場合は Text をクリアする
        if (cControl is TextBoxBase) {
            cControl.Text = string.Empty;
        }
    }
}

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

C# 全般
    // 現在のフォーム内のすべての TextBox の Text をクリアする
    ClearTextBox(this);

関連するリファレンス

準備中です。

スポンサーリンク