循环中的组合框

时间:2015-05-16 11:46:43

标签: c# winforms

我的表单上有超过50个组合框,其中包含货币(美元,欧元)。每种货币都有自己的价格TextBox。

我想要做的是基于货币的总和价格值。 例如,如果我有20美元,我想得到这20个价格值的总和。 如何循环组合框?

2 个答案:

答案 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
            }
        }
    }