object cmbVirtualType = null;
        object cmbMdo = null;
        object cmbadd = null;
        private void BangDingCmb()
        {
            cmbVirtualType = man.GetVirtualTypeName().Tables[0];            cmbMdo = cmbVirtualType;
            cmbadd = cmbVirtualType;
            cmbQueVirtualType.DisplayMember = "VirtualTypeName";
            cmbMdoVirtualType.DisplayMember = "VirtualTypeName";
            cmbAddVirtualType.DisplayMember = "VirtualTypeName";            cmbQueVirtualType.DataSource = cmbVirtualType;
            cmbMdoVirtualType.DataSource = cmbMdo;
            cmbAddVirtualType.DataSource = cmbadd;
     
    
           
            cmbQueVirtualType.DataSource = man.GetVirtualTypeName().Tables[0];
            cmbMdoVirtualType.DataSource =man.GetVirtualTypeName().Tables[0];;
            cmbAddVirtualType.DataSource = man.GetVirtualTypeName().Tables[0];
我想牺牲内存来,减少访问数据库次数,可是现在是 引用类型,公用内存。 每当一个
ComboBox的变化,会引起其他的变化。 
        
 三个ComboBox的数据是一样的。  总之想到达这样的目的, 减少访问次数 ,三个控件互不影响。          
                  }

解决方案 »

  1.   

    我建议你这样做,定义一个Datatable ,在窗体加载的时候把所有数据加载到这个DataTable里.不用自己去划分内存.然后把Datatable 的数据 帮定到你要绑的控件就可以了,都在内存中呢,你随便操作好了
    应该不会有互相影响的现象,
     
      

  2.   

    那就把数据拆分成3个datatable(注意重新组织DataTable的数据),各用各的,不知道这样可不可行?
      

  3.   

    一次性读取所需数据
    可以放到不同的DataTable里边
    直接在DataTable里边进行查询筛选
    绑定
      

  4.   


    真的是好办法吗?定义成Object都不行,更何况一个DataTable。他们都是引用类型啊。
      

  5.   

    获取数据后,再克隆2份,每个combobox一份.
    疑问:你的下来框难道还需要编辑数据后还原到datatable中去?
      

  6.   

    不到datatable中。
    获取数据后,再克隆2份,每个combobox一份.
     这个我早就试了 不行的啊。
      

  7.   

    取出的DataTable dt1,再克隆dt2,dt3
    三个不指向同一地址的DataTable,肯定互不影响.
    是克隆
      

  8.   

    不是克隆,那样的会很麻烦。 因为克隆值有表结构的,没有数据,还要去添加数据。最简单我方法是:复制
                  
                  DataTable dt1 = VirtualType.GetVirtualTypeName().Tables[0];
                DataTable dt2 = dt1.Copy();
                DataTable dt3 = dt1.Copy();