我的表单上有超过50个组合框,其中包含货币(美元,欧元)。每种货币都有自己的价格TextBox。
我想要做的是基于货币的总和价格值。 例如,如果我有20美元,我想得到这20个价格值的总和。 如何循环组合框?
答案 0 :(得分:0)
int i = 0;
foreach (Control c in this.Controls)
{
if (c is ComboBox)
{
if (c.Text == 'USD')
i++;
}
}
答案 1 :(得分:0)
您可以使用组合框的.Text属性,如@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
}
}
}