2012-01-28 13 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()の定義が含まれていないと言われています。 –

+0

@SiHyungLee - 私はあなたがWindowsフォーム(ウェブフォームを想定)を使用していたことを知りませんでした。同様の機能については、http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.find(v=vs.100).aspxを参照してください。 –

+0

ありがとうございます。わかった! –

2

多くの名前付き変数ではなく、配列にインデックスを付けるだけでなく、配列を使用します。

関連する問題