2016-11-22 23 views
0

所以我想要有大約12個文本框(稍後我還將添加12個圖片框),這些框中將包含產品的名稱。然而,雖然目錄中沒有選擇超過12種產品的選擇,但可能會少一些。如何通過編號在windows窗體中尋址文本框?

爲了節省空間,我想我會創建一個循環,檢查每個循環是否存在目錄中的產品,如果有,則會將產品分配給文本框[i]。

所以基本上,我希望能夠將textBox1作爲textBox [1],textBox2作爲textBox [2]等。

我試圖做它像

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

但好像我只能從初始創建這樣的對象,並在那裏創建它似乎是unacessible其他地方,即使在相同的形式,所以我可以調用該函數在表單初始化時僅顯示一次,並且我希望在每次有人購買任何東西時調用顯示方法

+1

什麼代碼你到目前爲止?如果您希望在其他地方訪問,則需要將文本框數組設置爲類變量。如果你發佈代碼,我可以看到你錯了,我所能做的就是假設你已經做了 –

+0

'InitializeComponent();'你可以編寫它應該工作的代碼 –

回答

0

如果你的文本框的編號一致您完成他們所在的形式或容器的控件屬性訪問他們,你可以。直接使用他們的名字:

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]中找到它們的索引。在窗體構造initalization後

0

創建數組或列表的全局變量

System.Windows.Forms.TextBox[] TxtArray; 

然後

InitializeComponent(); 

您最多可以添加行類似

TxtArray = new TextBox[] { textBox1, textBox2, textBox3, ... }; 
相關問題