こんにちは、Windows Application Form でテキスト ボックスを作成するときに、box[0]、box[1] などの名前を付けることができません。このようにしたいのは、それらをループで使用したいからです。
7 に答える
それらを作成したら、それらのリストを作成してみませんか? フォームの初期化関数では、次のようなことができます。
List<TextBox> myTextboxList = new List<TextBox>();
myTextBoxList.Add(TextBox1);
myTextBoxList.Add(TextBox2);
mytextBoxList.Add(TextBox3);
これで、「myTextboxList」を次のように繰り返すことができます。
Foreach (TextBox singleItem in myTextboxList) {
// Do something to your textboxes here, for example:
singleItem.Text = "Type in Entry Here";
}
実は私TextBox[] array = { firstTextBox, secondTextBox };
も作品を発見!
実行時にテキストボックスを作成し、それらを配列に入れることができます...
設計時にそれを行う場合は、必要なthis.Controls
テキスト ボックスのみにアクセスするために、配列全体に対していくつかの制御フィルタリング ロジックを実行する必要があります。if (currControl is TextBox)
フォーム内のすべてのテキスト ボックスが、配列に必要なものであるかどうかを検討してください。
設計時のもう 1 つのオプションは、必要なすべてのテキスト ボックスを親となるパネルに配置し、パネルの子 (コントロール) を反復処理して TextBox にキャストすることです。
ランタイム ソリューションは次のようになります。
var arr = new TextBox[10];
for (var i = 0; i < 10; i++)
{
var tbox = new TextBox();
// tbox.Text = i.ToString();
// Other properties sets for tbox
this.Controls.Add(tbox);
arr[i] = tbox;
}
個人的には、これには配列を使用しません。List のような一般的なコレクションの形式を使用します。
List<TextBox> textBoxList = new List<TextBox>();
//Example insert method
public void InsertTextBox(TextBox tb)
{
textBoxList.Add(tb);
}
//Example contains method
public bool CheckIfTextBoxExists(TextBox tb)
{
if (textBoxList.Contains(tb))
return true;
else
return false;
}
必ずしも Contains メソッドを使用する必要はありません。Any() を使用することもできますし、別の方法を見つけることもできます。すべては、何をしているかによって異なります。この場合、ジェネリック コレクションを使用すると、単純な配列よりも柔軟性が高くなると思います。
C#
これを使用してテキストボックスの配列を作成するだけです
public Text [] "YourName" = new Text ["how long you want the array"];
次に、テキスト ボックスを配列に個別に追加します。
TextBox[] t = new TextBox[10];
for(int i=0;i<required;i++)
{
t[i]=new TextBox();
this.Controls.Add(t[]);
}