小弟第一次混这个版块 希望大家多多帮助小弟的问题
是一个c#应用程序
程序加载是 绑定到listbox1  
在listbox1 选中后 点以后按钮 可以移动到另一个listbox2//绑定代码
private void FrmPrint_Load(object sender, System.EventArgs e)
{ string strConn=ConfigurationSettings.AppSettings["connString"];
SqlConnection myCn = new SqlConnection(strConn);
myCn.Open();
string SqlConn="select  aa from abcd";
SqlCommand cmd =new SqlCommand(SqlConn,myCn);
SqlDataAdapter da =new  SqlDataAdapter(cmd);
DataSet ds=new DataSet();
da.Fill(ds,"Type");
this.listBox1.DataSource=ds.Tables["Type"];
this.listBox1.DisplayMember="aa ";
this.listBox1.ValueMember="aa ";
myCn.Close(); 
}
//移动到另一个listbox2的代码
private void butRight_Click(object sender, System.EventArgs e)
{
try
{
for(int i =listBox1.SelectedItems.Count-1;i>=0;i--)
{
listBox2.Items.Add(listBox1.SelectedItems[i]); listBox1.Items.Remove(listBox1.SelectedItems[i]);

}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
} }
                 但是移动的时候 出现错误 说设置DataSource item 没法修改之类的 
谢谢大家乐

解决方案 »

  1.   

    那就用items.add的方法for循环add进去
      

  2.   

    你这个是
    把一个list 的内容放到另一个,再从原list里面删除的例子啊,设置完了DataSource 就不能更改listbox了,
    把查询结果通过Datareader 读取,然后items.add 加进去,这时候能循环了
      

  3.   

     private void FrmPrint_Load(object sender, System.EventArgs e)
            {            string strConn=ConfigurationSettings.AppSettings["connString"];
                SqlConnection myCn = new SqlConnection(strConn);
                myCn.Open();
                string SqlConn="select  aa from abcd";
                SqlCommand cmd =new SqlCommand(SqlConn,myCn);
                DataReader read = cmd.ExcuteReader();
                while(read.Read())
                {
                   listBox1.items.Add(read[0].ToString());
                }
                myCn.Close(); 
            }
    //移动到另一个listbox2的代码
            private void butRight_Click(object sender, System.EventArgs e)
            {
                try
                {
                    for(int i =listBox1.SelectedItems.Count-1;i>=0;i--)
                    {
                        listBox2.Items.Add(listBox1.SelectedItems[i]);                    listBox1.Items.Remove(listBox1.SelectedItems[i]);
                        
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }        }
      

  4.   


    this.listBox1.DataSource=ds.Tables["Type"];
                this.listBox1.DisplayMember="aa ";
                this.listBox1.ValueMember="aa ";
    改成        DataTable dtType = ds.Tables["Type"];
            for (int i = 0; i < dtType.Rows.Count; i++)
                listBox1.Items.Add(new ListItem(dtType.Rows[i]["aa"].ToString(), dtType.Rows[i]["aa"].ToString()));
      

  5.   

    楼主你是绑定的DataSource,所以无法对项集合进行修改。只要修改Load事件中的绑定就行了
    private void FrmPrint_Load(object sender, System.EventArgs e)
            {            string strConn=ConfigurationSettings.AppSettings["connString"];
                SqlConnection myCn = new SqlConnection(strConn);
                myCn.Open();
                string SqlConn="select  aa from abcd";
                SqlCommand cmd =new SqlCommand(SqlConn,myCn);
                SqlDataAdapter da =new  SqlDataAdapter(cmd);
                DataSet ds=new DataSet();
                da.Fill(ds,"Type");
                foreach (DataRow dr in ds.Tables["Type"].Rows)
                {
                    this.listBox1.Items.Add(dr["aa"]);
                }
                myCn.Close();
            }