2016-11-22 5 views
0

私は約12個のテキストボックス(後で12個の画像ボックスを追加する予定です)を持ち、その中に製品の名前を付けたいと思います。しかし、カタログには12以上の製品があるという選択肢はありませんが、それよりも少なくてもかまいません。Windowsフォームのテキストボックスの番号をどのように指定できますか?

スペースを節約するため、カタログに商品が残っている場合はすべてのループをチェックするサイクルを作成し、存在する場合は製品をテキストボックス[i]に割り当てます。

基本的には、textBox1をtextBox [1]、textBox2をtextBox [2]などと扱うことができます。

ので、私は

System.Windows.Forms.TextBox[] array = { textBox1, textBox2, textBox3 }; 

ようにそれをやってみました。しかし、私は唯一の初期化からこのようなオブジェクトを作成することができますようにそれはようで、そこに作成されたときに、それも同じ形で、他のどこunacessibleのようですフォームが初期化されたときに一度しか表示されない関数を呼び出すことができます。誰かが何かを購入するたびに表示メソッドを呼び出すようにします。

+1

のような行を追加することができます配列またはリスト

System.Windows.Forms.TextBox[] TxtArray; 

のグローバル変数を作成します。これまでのところ?他の場所にアクセスしたい場合は、テキストボックス配列をクラス変数にする必要があります。あなたがコードを投稿した場合、どこが間違っているのか分かりました。私ができることは、あなたがそれをしたと仮定することです。 –

+0

'InitializeComponent();の後に、動作するはずのコードを書くことができます –

答えて

0

は一貫して、あなたは彼らがにいるフォームまたはコンテナのControlsプロパティを介してそれらにアクセスすることができます。直接自分の名前を使用します。

for(int i = 0; i<12;i++) 
{ 
    this.Controls["textBox"+i.ToString()].Text = "Something"; 
} 
+0

ありがとう!まさに私が探していたもの! – Gytis39

1

リストの使用はどうですか?

List<TextBox> textboxes = new List<TextBox> { textBox1, textBox2, textBox3 }; 

これは、System.Collections.Genericへの参照が必要です。リストに自分の番号をテキストボックスにアクセスすることができた後

:あなたのテキストボックス番号が付けられていると

textboxes[0] 
0

すでにデザイン時に追加12個のテキストボックスを持っている場合は、この操作を行うことができます。

public partial class Form1 : Form 
{ 
    List<TextBox> textboxes; //As a member of the class to be accesible everywhere in the class. 
    public Form1() 
    { 
     InitializeComponent(); 
     textboxes = new List<TextBox> { textBox1, textBox2, textBox3, ... }; //Just to be sure they are already created. 
    } 

そして、フォームクラスのどのメソッドからでもリストtextboxes[i]のインデックスでアクセスできます。

0

次に、フォームのコンストラクタ

InitializeComponent(); 

でinitalization後にあなたは何をすべきか、コード

TxtArray = new TextBox[] { textBox1, textBox2, textBox3, ... }; 
関連する問題