C# 循环中的组合框

C# 循环中的组合框,c#,winforms,C#,Winforms,我的表格上有50多个组合框,其中的项目货币为美元、欧元。每种货币都有自己的价格文本框 我想做的是基于货币的价格总和。 例如,如果我有20美元,我想得到这20个价格值的总和。 如何循环组合框?您可以使用组合框的.Text属性,正如@AYETY所建议的,但我认为这取决于您如何填充它们,以及您是否愿意使用值而不是文本,等等 int i = 0; foreach (Control c in this.Controls) { if (c is ComboBox) {

我的表格上有50多个组合框,其中的项目货币为美元、欧元。每种货币都有自己的价格文本框

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

您可以使用组合框的.Text属性,正如@AYETY所建议的,但我认为这取决于您如何填充它们,以及您是否愿意使用值而不是文本,等等

int i = 0;    
foreach (Control c in this.Controls)
{
    if (c is ComboBox)
    {
        if (c.Text == 'USD')
            i++;
    }
}
无论如何,您没有说明组合框在表单上的位置,因此如果它们放在容器中,您需要递归地搜索表单上的控件,例如

    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;
    }

…将组合框添加到数组列表中,然后在数组列表中循环。是组合框还是文本框?浏览50个组合框可能有点讨厌UI-wise@AYETY显示示例数据组合框和相关文本框是否在一个面板中?或者通过代码进行关联?否则,仅仅根据表格上的位置来匹配它们会变得很棘手。
    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
            }
        }
    }