private void Button3_Click(object sender, System.EventArgs e)
{
//ListBox2.SelectionMode = SelectionMode.MultiExtended;
 
if (ListBox2.SelectedIndex!=-1)
{ for(int i=0;i<ListBox2.Items.Count;i++)
{

if(ListBox2.Items[i].Selected )
{
Response.Write("<script>alert ('"+i+" ')</script>");
Response.Write("<script>alert ('"+ListBox2.Items[i].Value.Trim().ToString()+" ')</script>");
ListItem mm=new ListItem(ListBox2.Items[i].Text.Trim().ToString(),ListBox2.Items[i].Value.Trim().ToString());
if (null==ListBox1.Items.FindByValue(ListBox2.Items[i].Value.Trim().ToString()) )
{
ListBox1.Items.Add(mm);

}
else
{
Response.Write("<script>alert('对不起!"+ListBox2.SelectedItem.Text.Trim().ToString()+"已存在列表中')</script>");
 
}
ListBox2.Items.Remove(ListBox2.Items[i] );
}
}
}
else
{

Response.Write("<script>alert('请选择用户!')</script>");
}
}程序不会报错,但是在我多选的时候却没有办法将所有选中的项移动到别一个ListBox谢谢了

解决方案 »

  1.   

    断点跟踪下看有没有进这句判断!
    if (null==ListBox1.Items.FindByValue(ListBox2.Items[i].Value.Trim().ToString()) )
      

  2.   

    我确定是执行了的
    因为当我选中五个的时候还可以增加三个到别一个ListBox里面啊
      

  3.   

    private void btnR_Click(object sender, EventArgs e)
    {
    if (lbSource.SelectedIndex >= 0)
    {
    ArrayList ari = new ArrayList();
    for (int i = 0; i <= lbSource.Items.Count - lbSource.SelectedIndex - 1; i++)
    {
    ListItem item = lbSource.Items[lbSource.SelectedIndex + i]; if (item.Selected == true)
    {
    ListItem newItem = new ListItem();
    newItem.Text = item.Text;
    newItem.Value = item.Value;
    newItem.Selected = false;
    lbDes.Items.Add(newItem); ari.Add(item);
    }
    }
    for (int n = 0; n < ari.Count; n++)
    {
    lbSource.Items.Remove((ListItem) ari[n]);
    }
    }
    }
      

  4.   

    to jqryga1221(学无止境) ( ) 
    谢谢!我也找到一种办法了,并找到了原因所在
    ListBox在删除的时候,每删除一次它的item索引会重置
    如删除item[1]时,则itme[2]会变为item[1]
    所以最好的办法就是从大到小的来删除