2012-01-28 33 views
1

我有在數字序列中命名的控件。 我想使用循環爲這些控件賦值。 下面的代碼是我目前使用的方式。C# - 將值分配給控制思想循環

txtSalesInvoiceForm_Qty1.Text = (salesInvoice.ItemQty1 == 0) ? string.Empty : salesInvoice.ItemQty1.ToString(); 
txtSalesInvoiceForm_Qty2.Text = (salesInvoice.ItemQty2 == 0) ? string.Empty : salesInvoice.ItemQty2.ToString(); 
txtSalesInvoiceForm_Qty3.Text = (salesInvoice.ItemQty3 == 0) ? string.Empty : salesInvoice.ItemQty3.ToString(); 
txtSalesInvoiceForm_Qty4.Text = (salesInvoice.ItemQty4 == 0) ? string.Empty : salesInvoice.ItemQty4.ToString(); 
txtSalesInvoiceForm_Qty5.Text = (salesInvoice.ItemQty5 == 0) ? string.Empty : salesInvoice.ItemQty5.ToString(); 
txtSalesInvoiceForm_Unit1.Text = salesInvoice.Unit1; 
txtSalesInvoiceForm_Unit2.Text = salesInvoice.Unit2; 
txtSalesInvoiceForm_Unit3.Text = salesInvoice.Unit3; 
txtSalesInvoiceForm_Unit4.Text = salesInvoice.Unit4; 
txtSalesInvoiceForm_Unit5.Text = salesInvoice.Unit5; 
txtSalesInvoiceForm_Particulars1.Text = salesInvoice.Particulars1; 
txtSalesInvoiceForm_Particulars2.Text = salesInvoice.Particulars2; 
txtSalesInvoiceForm_Particulars3.Text = salesInvoice.Particulars3; 
txtSalesInvoiceForm_Particulars4.Text = salesInvoice.Particulars4; 
txtSalesInvoiceForm_Particulars5.Text = salesInvoice.Particulars5; 

有沒有辦法像這樣?

int index = 1; 
foreach (SalesInvoiceItem item in salesInvoice.SalesInvoiceItems) 
{ 
    (txtSalesInvoiceForm_Qty + index.ToString()).Text = Value; 
    indexer++       
} 

回答

3
Control parent = this.pnlParent; // this must be the immediate parent control 

int index = 1; 
foreach (SalesInvoiceItem item in salesInvoice.SalesInvoiceItems) 
{ 
    TextBox tb = parent.FindControl("txtSalesInvoiceForm_Qty" + index++) as TextBox; 
    tb.Text = Value;  
} 

關鍵是FindControl(),它搜索家長的直接子女。我個人認爲這在大多數情況下都是草率的代碼。

+0

謝謝!這正是我想要的!布如何來我不能使用parent.FindControl()?它說Windows.Form.Controls不包含FindControl()的定義。 – 2012-01-28 08:09:15

+0

@SiHyungLee - 我不知道你使用的是Windows Forms(假設爲網頁表單)。請參閱http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.find(v=vs.100).aspx以獲取類似的功能。 – 2012-01-28 09:48:38

+0

謝謝。我知道了! – 2012-01-28 10:14:03

2

使用一個數組而不是這麼多的命名變量,只是索引到數組中。