刚开始学C# ASP。NET,就试着做一些例子:
两个ListBox,中间有四个按钮。第一个可以将左边LISTBOX的内容部分移到右边的LISTBOX中,Button3的代码如下,可以正确运行。
但Button4可以无错运行,我选中左边的一个内容,按这个按钮,却没有东西过去。
我调试发现:if (ListBox1.Items[i].Selected) 一直为False。这是怎么回事?
private void Button3_Click(object sender, System.EventArgs e)
{
for (int i=0;i<ListBox1.Items.Count;i++)
ListBox2.Items.Add(ListBox1.Items[i]);
ListBox1.Items.Clear();
} private void Button4_Click(object sender, System.EventArgs e)
{
for (int i=0;i<ListBox1.Items.Count;i++)
if (ListBox1.Items[i].Selected)
ListBox2.Items.Add(ListBox1.Items[i].Text);
}

解决方案 »

  1.   

    private void Button4_Click(object sender, System.EventArgs e)
    {
    foreach(ListItem li in ListBox1.Items)
       {
          if(li.Selected == true)
             {
    ListBox2.Items.Add(li.Text);
               }
       }
    }
      

  2.   

    for (int i=0;i<ListBox1.SelectedItems;i++)
    {
    ListBox2.Items.Add(ListBox1.SelectedItems[i].ToString();
    }这样就可以
      

  3.   

    你是不是PAGELOAD代码里没有
    if(!IsPostBack)
    {
    }
    ??
      

  4.   

    不行,提示listbo1并不包含对ListBox1.SelectedItems的定义。
      

  5.   

    if(!IsPostBack)
    {
    }
    这个直接加上有什么用吗?里面要加什么内容?
      

  6.   

    不好意思,我看错了,我写的是winform的。
    seesea125(执著)说的应该是对的。
    if(!IsPostBack)
    {
    //存放你绑定ListBox1数据的代码
    }if(!IsPostBack)判断是否第一次打开该画面。
      

  7.   

    try chang "ListBox1.Items[i].Selected" into "ListBox1.Items[i].Selected == true"
      

  8.   

    ALL:搞定了,如“chenxi6713(番茄) 和seesea125(执著)”
    只是不明白。为什么要:
    if(!IsPostBack)
    {
    //存放你绑定ListBox1数据的代码
    }这是什么意思?有什么作用?谢谢。搞明白了就放分。
      

  9.   

    if(!IsPostBack)
    上面这句话是判断这个画面是否第一次打开。
    因为web画面点击按钮的时候都会触发PAGELOAD。
    你没有加这句话的时候,点击Button3的时候,他重新绑定了ListBox1的数据,此时没有记忆ListBox1中哪些数据被选中,所以导致if (ListBox1.Items[i].Selected) 一直为False