我在我的应用中使用了几个组合框,我正在努力解决以下问题。
当我更改任何框的值时,它也会在其他框中更改它。
为了让你们了解应用程序的流程,我将解释最新情况。 “初级肌肉”盒子起着至关重要的作用。如果我在那里选择“胸部”,它将改变下面四个方框的数据源,仅进行“胸部锻炼”。真正的问题是,当我在第一次“初级练习”中选择“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”。
答案 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();
}