2

C#/ASP.Net Web アプリケーションを作成していますが、コード ビハインドで変数値を設定する必要がある多数のテキスト ボックスがあります。現在、私は次のことを行っています:

AspTextBox0.Text = codeBehindVariable[0];
AspTextBox1.Text = codeBehindVariable[1];
AspTextBox2.Text = codeBehindVariable[2];
AspTextBox3.Text = codeBehindVariable[3];
… 

単純な「for」ループでこれを行う簡単な方法はありますか??

これは非常に単純化された例です。実際のプログラムには、変数が割り当てられたときに実行する必要がある switch ケースとその他のテストがあります。したがって、「for」ループを使用すると、コードの記述と保守が大幅に簡素化されます。VB6 とコントロール配列の古き良き時代に戻ると、これは簡単なことでした。

4

3 に答える 3

6

VB6 の古き良き時代はとうの昔に過ぎ去り、戻ってこないほうがよいでしょう。

コントロール配列を作成するか、List<TextBox>自分で作成します。

var textBoxes = new List<TextBox> {
    AspTextBox0,
    AspTextBox1,
    // ...
};

次に、次のように圧縮しますcodeBehindVariable

textBoxes.Zip(codeBehindVariable, 
              (textBox, variable) => textBox.Text = variable);

または、forループを使用する場合:

for ( int i = 0; i < codeBehindVariable.Length; i++ )
{
    textBoxes[i].Text = codeBehindVariable[i];
} 

ループでは、と のfor両方が同じ数のアイテムtextBoxesを持っていることを確認する必要があることに注意してください (または、最短のリストのエントリ数に対してのみループを実行します)。関数はこれを自動的に処理しますcodeBehindVariableZip

于 2012-10-16T20:13:16.233 に答える
1

を実装するクラスにいると仮定するとSystem.Web.UI.Page、コントロールを検索して、次のように必要なものを見つけることができます。

for (int i = 0; i <= codeBehindVariable.Length; i++)  
{ 
  var textBox = FindControl("AspTextBox" + i, false);
  if(textBox != null)
  {
    textBox.Text = codeBehindVariable[i];  
  }
}
于 2012-10-16T20:24:58.687 に答える
-1

あなたはこのようなことをすることができます...

    int i = 0;
    foreach (Control ctrl in this.Controls)
    {
        if (ctrl is TextBox)
        {
            TextBox tempTextBox = (TextBox)ctrl;
            tempTextBox.Text = codeBehindVariable[i];
            i++;
        }
    }
于 2012-10-16T20:13:12.697 に答える