如何将类的列表添加到listboxbox1并将所选项目移动到listbox2

本文关键字:选项 项目 移动 listbox2 listboxbox1 列表 添加 | 更新日期: 2023-09-27 18:22:50

我有两个列表框我想从数据库中将id和值填入listbox1。然后,我想将所选项目添加到列表框2,并从名单框1中删除项目。

List<Plan> lstPlan = new List<Plan>();
        SqlDataReader rd = null;
        try
        {
            STS_STORE_PROC_SCHEME.GetPlanParameter objInsert = new STS_STORE_PROC_SCHEME.GetPlanParameter();
            objInsert.GetPlan_fun(ref rd, ref ds, SqlReturnType.DATASET_sts);
            //while (rd.Read())
            //{
            //    lstPlan.Add(new Plan(Convert.ToInt32(rd[0].ToString()), rd[1].ToString()));
            //}
            //for (int i = 0; i < lstPlan.Count; i++)
            //{
            //    listBox1.Items.Add(lstPlan[i].ToString());
            //    //from.Items.Remove(items[i]);
            //}
            listBox1.DataSource = ds.Tables[0].DefaultView;
            listBox1.DisplayMember = "Planname";
            listBox1.ValueMember = "nvcharPlanName";
        }
        catch (Exception ex)
        { 
        }

其给出错误

当DataSource属性为设置

如何将类的列表添加到listboxbox1并将所选项目移动到listbox2

我想您需要修改支持列表框(ds.Tables[0])的数据,并将其重新绑定到列表框,就像您在以下行所做的那样:

listBox1.DataSource = ds.Tables[0].DefaultView;

类似地,对于从一个列表框添加和删除到另一个列表盒,简单地说,您可以

  • 定义两个列表
  • 对这些列表进行操作(互相添加项目,去除等等)
  • 将这些列表设置为单个listboxesDataSources

编辑:

代码段。。

Dictionary<int, Plan> dicPlan1 = new Dictionary<int, Plan>();
dicPlan1.Add(1, new Plan());
dicPlan1.Add(2, new Plan());
dicPlan1.Add(3, new Plan());
dicPlan1.Add(4, new Plan());
listbox1.DataSource = new List<Plan>(dicPlan1.Values); //this will get you only the plans
Dictionary<int, Plan> dicPlan2 = new Dictionary<int, Plan>();
dicPlan2.Add(1, new Plan());
dicPlan2.Add(2, new Plan());
dicPlan2.Add(3, new Plan());
dicPlan2.Add(4, new Plan());
listbox2.DataSource = new List<Plan>(dicPlan2.Values); //this will get you only the plans

然后,如果您想将第一个集合添加到第二个集合:

dicPlan2.Add(dicPlan1[1]);

使用索引从集合中删除

dicPlan1.RemoveAt(0); // removes the first item!! (not this => dicPlan2.Add(1, new Plan());)

就这么简单。。不要忘记。为了在列表框中查看更新,您需要在更改列表后再次设置数据源。

listbox1.DataSource = new List<Plan>(dicPlan1.Values);
listbox2.DataSource = new List<Plan>(dicPlan2.Values);

希望能有所帮助。