c# checklistbox增加和批量删除对象

增加:

if (fFrmStationChoose.StationsList != null)//fFrmStationChoose.StationsList为一个装载新数据的表
                {
                    DataTable dt = (DataTable)clbxStations.DataSource;
                    if (dt != null)
                    {
                        dt.Merge(fFrmStationChoose.StationsList, true);//合并两个表
                        clbxStations.DataSource = dt;
                    }
                    else
                        clbxStations.DataSource = fFrmStationChoose.StationsList;
                    clbxStations.ValueMember = "seq";
                    clbxStations.DisplayMember = "stationidAndName"; 
                }

批量删除:

            DataTable dt = (DataTable)clbxStations.DataSource;
            List<int> count = new List<int>();
            for (int i = 0; i < clbxStations.Items.Count; i++)
            {
                if (clbxStations.GetItemChecked(i) == true)
                {
                    count.Add(i);
                }
            }
            clbxStations.DataSource = null;
            for (int i = dt.Rows.Count-1; i >-1; i--)//批量删除datatable需要从下往上
            {
                for (int j = 0; j < count.Count; j++)
                {
                    if (i == j)
                    {
                        dt.Rows[count[i]].Delete();
                        break;
                    }
                }
            }
            dt.AcceptChanges();//提交对表的修改
            clbxStations.DataSource = dt;
            clbxStations.ValueMember = "seq";
            clbxStations.DisplayMember = "stationidAndName"; 

注意datatable的引用类型

新建的new可以不必手动释放,因为.net里面的CLR(common language runtime)会自动内存管理搜索

posted on 2013-09-27 15:52  Mis_Eur  阅读(685)  评论(0编辑  收藏  举报

导航