我有一个带有网格的 WinForm 应用程序,每行包含一个 ComboBox。所有都绑定(bind)到同一个集合(集合可能会在后面发生变化,这就是为什么我不希望每个 Combo 有不同的集合,还有内存成本)。问题是,当我在一个组合中选择某个对象时,它会更改每个组合中的选定对象。
这是您可以运行并轻松重现的代码。
public Form1()
{
InitializeComponent();
this.comboBox1 = new System.Windows.Forms.ComboBox();
List<int> numList = new List<int>(){1,2,3,4};
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(33, 169);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(126, 21);
this.comboBox1.TabIndex = 3;
this.comboBox1.DataSource = numList; // BINDING TO NUMLIST
this.comboBox2 = new System.Windows.Forms.ComboBox();
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Location = new System.Drawing.Point(243, 367);
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(126, 21);
this.comboBox2.TabIndex = 4;
this.comboBox2.DataSource = numList; // BINDING TO NUMLIST ( THE SAME LIST
this.Controls.Add(this.comboBox2);
this.Controls.Add(this.comboBox1);
}
只需制作一个表格并粘贴 ComboBox 1 和 2 的声明。
任何想法怎么会发生。我的意思是如果它是一个简单的列表,它不会跟踪选定的对象。数据源背后发生了什么?
最佳答案
您需要使用单独的列表,如果您绑定(bind)到相同的列表,这是预期的行为。
关于c# - .Net Controls DataSource 属性上的缺失行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644784/