大家好 昨天到今天我思考同一个问题,想了很久差了很多资料但是还是不知道是怎么回事,请各位帮忙看下怎么回事,谢谢。问题是:改变任意一个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 = ""; 
                }
            }

解决方案 »

  1.   

    你将氖Combox都绑定到同一个DataTable中,当然会全部是联动了,而且数据相同。
      

  2.   

    为什么我要绑定到同一个DataTable呢 是因为这些comboBox的items都是相同的对于这样的问题  我该怎么做呢?谢谢
      

  3.   

    还有就是为什么绑定到同一个的DataTable 会有这样的联动效果呢原理是什么 ?
    我有点没有搞明白
      

  4.   

    所有ComboBox都同一个DataTable?感觉你的问题有点类似值传递和引用传递的关系...
      

  5.   


    问题解决了 就修改了一句 comBox[i, j].DataSource = ds.Tables[0];
    改为:
    comBox[i, j].DataSource = ds.Tables[0].Copy();但是这是为什么呢 还有点不太清楚
      

  6.   

    comBox[i, j].DataSource = ds.Tables[0].Copy();
      

  7.   

    考贝一副本过去行了 comBox[i, j].DataSource = ds.Tables[0].Copy();
      

  8.   


    简单来说,你把一个数据源绑定到某个数据绑定控件的时候,实际上一个Form窗体的BindingManagerBase中进行了记录。当你改变了Comboox的下拉选项,其实改变了这个Position属性。因此产生联动效果。