大家好 昨天到今天我思考同一个问题,想了很久差了很多资料但是还是不知道是怎么回事,请各位帮忙看下怎么回事,谢谢。问题是:改变任意一个comboBox的值 其他的comboBox全部变为相同的值,下面是关键代码,是不是代码写错了? //初始化3行,tblcount列
ComboBox[,] comBox = new ComboBox[3, tblCount];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < tblCount; j++)
{
comBox[i, j] = new ComboBox(); //位置初始化
comBox[i, j].Location = new Point(100 + (j * 125), 25 + (33 * i)); //自增1
count++;
//为每个控件命名
comBox[i, j].Name = "combox" + count; //font
comBox[i, j].Font = new Font("Verdana", comBox[i, j].Font.Size, comBox[i, j].Font.Style);
comBox[i,j].Font = new Font(comBox[i, j].Font.FontFamily, 10, comBox[i, j].Font.Style); //将自动生成的控件添加到主面板上
this.Controls.Add(comBox[i, j]); //comBox[i, j].SelectedIndexChanged += new EventHandler(comboxEvent);
comBox[i, j].DisplayMember = "name";
comBox[i, j].DataSource = ds.Tables[0];
comBox[i, j].Text = "";
}
}
ComboBox[,] comBox = new ComboBox[3, tblCount];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < tblCount; j++)
{
comBox[i, j] = new ComboBox(); //位置初始化
comBox[i, j].Location = new Point(100 + (j * 125), 25 + (33 * i)); //自增1
count++;
//为每个控件命名
comBox[i, j].Name = "combox" + count; //font
comBox[i, j].Font = new Font("Verdana", comBox[i, j].Font.Size, comBox[i, j].Font.Style);
comBox[i,j].Font = new Font(comBox[i, j].Font.FontFamily, 10, comBox[i, j].Font.Style); //将自动生成的控件添加到主面板上
this.Controls.Add(comBox[i, j]); //comBox[i, j].SelectedIndexChanged += new EventHandler(comboxEvent);
comBox[i, j].DisplayMember = "name";
comBox[i, j].DataSource = ds.Tables[0];
comBox[i, j].Text = "";
}
}
我有点没有搞明白
问题解决了 就修改了一句 comBox[i, j].DataSource = ds.Tables[0];
改为:
comBox[i, j].DataSource = ds.Tables[0].Copy();但是这是为什么呢 还有点不太清楚
简单来说,你把一个数据源绑定到某个数据绑定控件的时候,实际上一个Form窗体的BindingManagerBase中进行了记录。当你改变了Comboox的下拉选项,其实改变了这个Position属性。因此产生联动效果。