ASP.NET 入門

ホーム > ASP.NET 各種コントロール > コントロール ID でコントロールを探す FindControl

コントロール 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 演算子をみてください。

ホーム > ASP.NET 各種コントロール > コントロール ID でコントロールを探す FindControl