none
Windows Form上でFindControlするには? RRS feed

  • 質問

  • Web FormにはFindControl(string)でコントロール名からForm上のコントロールを取得できますが、Windows Formで同じようなことをするにはどうすればよいでしょうか。

    たとえばtextBox1, textBox2, .......textBox10がForm1上にあり、
    for(int i=1;i<=10;i++)
    {
    Control tb =FindControl("textBox" + i.toString());
    tb.text=i.toString();
    }

    のようにしたいです。キーワードをご存知の方、教えてください。

    2006年9月10日 0:32

回答

  • じゃんぬねっとさん、とても早い返信ありがとうございました。

    controlsインデクサというキーワードで検索してさらに詳しく調べることができました。

    Control tb = null;
    foreach(Control c in this.Controls)
    {
    if (c.Name == "textBox1")
    tb = c;
    break;
    }

    1.1から2.0にして簡単にできました。
    リフレクションはもうちょっと調べてみます。
    ありがとうございました。

    2006年9月10日 5:02

すべての返信

  • .NET Framework 2.0 であれば、Form.Controls インデクサで取得できます。
    1.1 以前は、リフレクションを使うか、Controls の中身を取り出すかになるでしょう。

    フォーム内のコントロールを名前で探して取得する

    FindControl、名前そのまんまでしたね。

    2006年9月10日 0:53
  • じゃんぬねっとさん、とても早い返信ありがとうございました。

    controlsインデクサというキーワードで検索してさらに詳しく調べることができました。

    Control tb = null;
    foreach(Control c in this.Controls)
    {
    if (c.Name == "textBox1")
    tb = c;
    break;
    }

    1.1から2.0にして簡単にできました。
    リフレクションはもうちょっと調べてみます。
    ありがとうございました。

    2006年9月10日 5:02