尝试设置单个组合框时,动态组合框表单会继续设置所有组合框

Dynamic Combobox Form keeps on setting all comboboxes when trying to set a single one

我有一个 WinForm-Application 使用户能够根据需要动态添加任意数量的组合框行。问题在于,当在单个组合框中选择一个值时,表单会继续将所有 cbs 设置为该值。

向表单动态添加新的组合框行的代码如下:

private void addRowSettingsTable(object sender, EventArgs e)
        {
            // Adds a new row to the table 
            Label attrLabel = new Label();
            attrLabel.Text = "Attribute:";
            tblFormSettings.Controls.Add(attrLabel);
            ComboBox cbAttributes = new ComboBox();
            cbAttributes.Name = ""+counter++;
            cbAttributes.DataSource = confFileSettings;
            tblFormSettings.Controls.Add(cbAttributes);
            listCBAttributes.Add(cbAttributes);
            Label valLabel = new Label();
            valLabel.Text = "Value:";
            tblFormSettings.Controls.Add(valLabel);
            TextBox tbValue = new TextBox();
            tblFormSettings.Controls.Add(tbValue);
            Button addButton = new Button();
            addButton.Text = "+";
            addButton.Click += addRowSettingsTable;
            tblFormSettings.Controls.Add(addButton);
            listTBValues.Add(tbValue);
        }

从下图可以看出,将一个cb赋值给一个值,会将所有添加的cbs更改为该值。

有人知道为什么会这样吗?我很确定为每个人创建一个新的 ComboBox-Object 不会让我 运行 陷入那个问题。

在原来的基础上给每个ComboBox自己的List DataSource:

cbAttributes.DataSource = new List<string>(confFileSettings);