使用c#中的每个循环为“组框”中的“组合框”数组赋值

时间:2013-05-24 08:08:49

标签: combobox foreach c#-3.0

我在groupBox中有10个comboBox 因为我只想在相应的comboBox中显示一个计算值,如果我设置了一个变量double i = 08.00;然后在按钮上单击cmboBox应该显示像这样的值

CB1-08.00
CB2-09.50
CB3-10.00
CB4-10.50
CB5-11.00
CB6-11.50

....等等到CB10但是我得到这样的输出 enter image description here

和代码

private void button1_Click(object sender, EventArgs e)
    {
        double i=08.00;
        foreach (var comboBox in groupBox1.Controls.OfType<ComboBox>())
        {
            comboBox.Text = i.ToString("00.00");
            i = i + 0.5;
        }
    }

3 个答案:

答案 0 :(得分:3)

您的组合框顺序在集合中有所不同,因此它会随机插入数字。也许你可以命名你的组合框例如cmb1,cmb2,cmb3等,如果你更新你的代码,它将运行。

答案 1 :(得分:0)

Controls集合中的控件未按其在表单上的外观排序。如果根据位置需要不同的值,则需要找到一种对它们进行排序的方法。

答案 2 :(得分:0)

Foreach循环不按您想要的顺序提供集合。前进的方法是为每个组合框提供一个标记ID,然后你可以用它来为它们分配一个值。

因此,您的第一个组合框将以标记ID 0开头,最后一个将具有8,

        double val = 08.00;
        for (int i = 0; i < groupBox1.Controls.Count; ++i)
        {
            var combobox = groupBox1.Controls[i] as ComboBox;
            int tag = int.Parse(combobox.Tag.ToString());
            double value = val + (0.5 * tag);
            combobox.Text = value.ToString("00.00");
        }

确保按照您想要的顺序标记cobbo框。