有两个问题
1、就是在窗体加载的时候,会自动执行一次combobox的selectedindexchanged的事件,怎么禁止它呢
2、我做的是一个combobox和其它的2个combobox联动的东西,就是说根据第一个combobox的选项来决定其它两个combobox的选项内容,联动是做出来了,可是这两个combobox怎么会一起动呢,也就是说在我选择“学历”(第一个combobox里的内容)时,其它两个的选项就变成“小学,中学,大学”,这点我做到了,可是,我在其中的一个里面选择了“大学”,怎么剩下的那个也跟着变成了“大学”,我想让它们分别选择不同的选项,怎么做得到呢,(说明一下,这两个combobox是同一个数据源)
在线等各位高手解答,多谢,(“多空”在么)

解决方案 »

  1.   

    1. 你在给ComboBox赋完列表值或者绑定之后,再加上SelectedIndexChanged事件,不要在InitialComponent()里面加就行了。
    2. 同一个数据源肯定不行啦,要用两个不同的,你可以把其中一个DataTable用Copy()方法到另一个DataTable,分别绑定。
      

  2.   

    sunjian_qi(sonne) 
    第二个问题的方法,copy()是什么方法,怎么用呢,要是我想放的combobox很多的话,比如说20个,那要绑定20个数据源岂不是很麻烦吗,能说得详细些么,多谢
      

  3.   

    使用DataTable.Clone方法克隆多份,放心,数据还是同样只有一份,只是索引等等复制了一份而已,不会消耗很多内存的。
      

  4.   

    private void Form3_Load(object sender, System.EventArgs e)
    {
    ConnectDB();//连接数据库
    adapter=new OleDbDataAdapter(@"select * from OpSort",conn);
    adapter.Fill(datOpe);
    adapter.SelectCommand.CommandText=@"select * from Project";
    adapter.Fill(datPro1);
                               CloseDB();//断开数据库
    LoadOpe();//生成第一个combobox
    }
    private void LoadOpe()
    {
    if(datOpe.Rows.Count>0)
    {
    NewSort.DataSource=datOpe;
    NewSort.DisplayMember="OperationSort";
    }this.NewSort.SelectedIndexChanged += new System.EventHandler(this.NewSort_SelectedIndexChanged);
    }
    private void LoadPro()
    {
    if(NewSort.SelectedIndex>=0)
    {
    datPro.DefaultView.RowFilter="ParentID='"+datOpe.Rows[NewSort.SelectedIndex]["ParentID"].ToString().Trim()+"'";
    NewProName1.DataSource=datPro.DefaultView;//第二个combobox
    NewProName1.DisplayMember="ProjectName";
    this.NewProName1.SelectedIndexChanged += new System.EventHandler(this.NewProName1_SelectedIndexChanged);
    NewProName2.DataSource=datPro.DefaultView;//第三个combobox
    NewProName2.DisplayMember="ProjectName";
    this.NewProName2.SelectedIndexChanged += new System.EventHandler(this.NewProName2_SelectedIndexChanged);
    }
      

  5.   

    System.Data.DataSet ds1 = new System.Data.DataSet();
    System.Data.DataSet ds2 = new System.Data.DataSet();
    System.Data.DataSet ds2 = new System.Data.DataSet();
    ……
    ……
    ds1 = datOpe.Clone;
    ds2 = datOpe.Clone;
    ds3 = datOpe.Clone;分别把ds1 ds2 ds3绑定到不同的combobox上
      

  6.   

    没有成功啊,我是这么写的
    adapter.Fill(datPro1);
    datPro2=datPro1.Clone();
    datPro3=datPro1.Clone();没有成功啊
      

  7.   

    1.在FormLoad的结尾处指定ComboBox的SelectIndex可以指定ComboBox显示的内容;
    2.ComboBox的联动问题的确是因为使用了同一个数据源.解决的办法楼上的各位都说了,还是用Copy()比较好,Clone()只能复制数据结构.Copy()的用法是这样的:
    comboBox1.DataSource=dataTable1;
    comboBox1.DisplayMember="Column2";
    DataTable dtbTmp2=dataTable1.Copy();
    comboBox2.DataSource=dtbTmp2;
    comboBox2.DisplayMember="Column2";