2015-05-16 45 views
-2

我的表單上有超過50個組合框,其中包含項目貨幣(USD,EUR)。每種貨幣都有自己的價格TextBox。循環中的組合框

我想要做的是根據貨幣彙總價格值。 例如,如果我有20美元,我想獲得這20個價格值的總和。 如何循環組合框?

+2

...的組合框通過數組列表添加到一個數組列表,然後循環。 –

+0

組合框或文本框?導航50個組合框可能會有點icky UI明智 – MickyD

+0

Comboboxes.text – AYETY

回答

0
int i = 0;  
foreach (Control c in this.Controls) 
{ 
    if (c is ComboBox) 
    { 
     if (c.Text == 'USD') 
      i++; 
    } 
} 
0

您可以使用組合框的。文本屬性,@AYETY建議,但我想這取決於你如何填充他們,如果你想用價值,而不是文字等

無論如何,你沒有說明組合框在表單中的位置,所以如果它們被放置在容器中,則需要遞歸搜索表單上的控件,例如

public IEnumerable<Control> GetChildControls(Control parentControl) 
    { 
     List<Control> controls = new List<Control>(); 

     foreach (Control child in parentControl.Controls) 
     { 
      controls.AddRange(GetChildControls(child)); 
     } 

     controls.Add(parentControl); 

     return controls; 
    } 

然後詢問組合框。使用組合框的Text屬性基於關閉,你可以做這樣的事情:

private void SumCurrencies() 
    { 
     var controls = GetChildControls(this); 

     foreach (var control in controls.Where(c => c is ComboBox)) 
     { 
      if (control.Text == "USD") 
      { 
       // do something 
      } 
      else if (control.Text == "GBP") 
      { 
       // do something 
      } 
      else if (control.Text == "EUR") 
      { 
       // do something 
      } 
     } 
    }