コントロール ID でコントロールを探す FindControl

動的にコントロールを生成するとか、多数のコントロールに連続した値を設定するときなど、 コントロールの ID の値から、コントロールオブジェクトを取得する方が便利である場合があります。

例えば、"textBox1"、"textBox2"、"textBox3" ・・・という ID を持つコントロールオブジェクトの参照を取得したいというような場合です。

ここでは、このように ID (の文字列) からコントロールを取得するための FindControl メソッドの利用方法を説明します。

コントロールの ID からオブジェクトを取得する FindControl

さっそく具体例からみてみましょう。

ひとつのページ上にテキストボックスとボタンがあります。

コントロール ID でコントロールを探す FindControl

このテキストボックスの ID は "TextBox1" です。

ボタンを押すと・・・

コントロール ID でコントロールを探す FindControl

"Hello" という文字がテキストボックスにセットされます。

非常に単純ですね。この例を元に FindControl メソッドでテキストボックスの ID を元にテキストボックスを探すとどうなるか見てみましょう。コードは次の通りです。Button1_Click メソッドはその名の通り、ボタンのイベントハンドラです。

using System;
using System.Web.UI.WebControls;

public partial class page1 : System.Web.UI.Page {

  protected void Button1_Click( object sender, EventArgs e ) {
    var txb = FindControl( "TextBox1" ) as TextBox;
    if( txb == null ) {
      return;
    }
    txb.Text = "Hello";
  }

}

FindControl メソッドにテキストボックスの ID を文字列で渡しています。 FindControl メソッドの戻り値の型は Control です。今、取得しようとしているのは TextBox 型です。ダウンキャストになるので、as でキャストしています。

C# の as 演算子については当サイトの姉妹サイト "C# 入門" の as 演算子をみてください。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 ASP.NET 入門