1

私は、1 から始まり 19 までの数字を除いて、同じ名前のテキスト ボックスがいくつかある C# アプリケーションを持っています。配列リスト。場合によっては、arrayList に 19 個の項目がないため、一部のテキスト ボックスが空になります。これが私がやろうとしていることのサンプルコードです。これは可能ですか?

  for (int count = 0; count < dogList.Count; count++)
        {
            regUKCNumTextBox[count+1].Text=(dogList[count].Attributes["id"].Value.ToString());
        }
4

3 に答える 3

4

上から下に入力するテキスト ボックスのコレクションはありますか? それなら、はい、のコレクションがTextBox適切と思われます。

TextBox参照を配列または a に貼り付ける場合--推奨されていないと見なされるList<TextBox>ため、 an は使用しません-- そうです、それを行うことができます。ArrayListList<T>

TextBox[] regUKCNumTextBox = new [] 
    {
         yourTextBoxA,
         yourTextBoxB,
         ...
    };

はい、あなたのロジックは可能です。コントロールの名前でクエリを実行することもできますが、実行時には重くなるため、トレードオフになります。はい、このソリューションでは、テキスト ボックスの参照を保持するコレクションを設定する必要がありますが、パフォーマンスは向上します。

于 2012-08-09T14:27:00.140 に答える
2

これを試して:

(ちなみに、WinFormsを使用していると仮定しています)

for (int count = 0; count < dogList.Count; count++)
{
   object foundTextBox = this.Controls.Find("nameofTextBoxes" + [count+1]);

   if (foundTextBox != null)
   {
      if (foundTextBox is TextBox)
      {
         ((TextBox)foundTextBox).Text=(dogList[count].Attributes["id"].Value.ToString());
      }
   }

}

このコードを使用して、コレクションのControlフォームを見つけようとしています。次に、コントロールがそのタイプであることを確認する必要があります。あるときは・・・ それを a にキャストして、それでやりたいことをします。この場合; プロパティに値を割り当てます。FormControlsTextBoxTextBoxText

TextBoxJames Michael Hare が提供するソリューションのように、esのコレクションを保持する方が効率的です。

于 2012-08-09T14:29:05.507 に答える
1

うわぁ; そこの全体的なデザインには何かが正しくないようです。しかし、それを過ぎて、動作する可能性のある疑似コードを簡単に紹介します。

for (int count = 0; count < dogList.Count; count++)
{
    var stringName = string.Format("myTextBoxName{0}", count);
    var ctrl = FindControl(stringName);
    if(ctrl == null) continue;
    ctrl.Text = dogList[count];
}
于 2012-08-09T14:31:15.400 に答える