如何处理链接的组合框(当我更改一个值时,它会将其更改为其他组合框)?

时间:2016-05-08 15:30:08

标签: c# forms combobox

我在我的应用中使用了几个组合框,我正在努力解决以下问题。

enter image description here

当我更改任何框的值时,它也会在其他框中更改它。

enter image description here

为了让你们了解应用程序的流程,我将解释最新情况。 “初级肌肉”盒子起着至关重要的作用。如果我在那里选择“胸部”,它将改变下面四个方框的数据源,仅进行“胸部锻炼”。真正的问题是,当我在第一次“初级练习”中选择“Bench Press”时,它会在所有人之下更改它,就像在屏幕截图中显示的那样。

    private void metroComboBox1_SelectionChangeCommitted(object sender, EventArgs e)
    {
        if ((string)primaryMuscleBox.SelectedItem == "Chest")
        {
            AddItems(primaryExerciesBox1, chestExercies);
            AddItems(primaryExerciesBox2, chestExercies);
            AddItems(primaryExerciesBox3, chestExercies);
            AddItems(primaryExerciesBox4, chestExercies);

        }
        else if ((string)primaryMuscleBox.SelectedItem == "Back")
        {
            AddItems(primaryExerciesBox1, backExercies);
            AddItems(primaryExerciesBox2, backExercies);
            AddItems(primaryExerciesBox3, backExercies);
            AddItems(primaryExerciesBox4, backExercies);
        }
        else if ((string)primaryMuscleBox.SelectedItem == "Legs")
        {
            AddItems(primaryExerciesBox1, legsExercies);
            AddItems(primaryExerciesBox2, legsExercies);
            AddItems(primaryExerciesBox3, legsExercies);
            AddItems(primaryExerciesBox4, legsExercies);
        }
    }

    private void AddItems(MetroComboBox comboBox, List<string> name)
    {
        comboBox.DataSource = null;
        comboBox.DataSource = name;
    }

我忘了提到我没有使用标准的comboBox,我使用的是“metroComboBox”。

1 个答案:

答案 0 :(得分:1)

这是因为您的所有ComboBox es 都绑定到同一数据源。 您必须为每个组合框设置新的BindingSource

private void AddItems(MetroComboBox comboBox, List<string> name)
{
    comboBox.DataSource =  new BindingSource(name, "");
}

或者您可以使用ToList()创建新的List

private void AddItems(MetroComboBox comboBox, List<string> name)
{
    comboBox.DataSource =  name.ToList();
}