尝试设置单个组合框时,动态组合框表单会继续设置所有组合框
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);
我有一个 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);