数组值到列表框中

时间:2013-05-23 11:04:46

标签: c# asp.net arrays sorting listbox

嘿家伙目前有以下代码

我正在尝试将值插入到列表框中,然后能够按字母顺序求助值并在同一列表框中重新显示它们。由于某种原因代码不起作用(没有错误 - 只是当我按下按钮时列表框清除)

protected void sortButton_Click(object sender, ImageClickEventArgs e)
{
    string[] movieArray = new string [cartListBox.Items.Count];

    for (int i = 0; i < cartListBox.Items.Count; i++)
    {
        movieArray[i] = cartListBox.Items[i].ToString();
    }

    Array.Sort(movieArray);

    cartListBox.Items.Clear();

    for (int i = 0; i < cartListBox.Items.Count; i++)
    {
        cartListBox.Items.Add(movieArray[i].ToString());
    }

}

4 个答案:

答案 0 :(得分:9)

我认为问题是最后一个循环。

这样做如下:

cartListBox.Items.Clear();

    for (int i = 0; i < movieArray.Length; i++)
    {
        cartListBox.Items.Add(movieArray[i].ToString());
    }

清除cartListBox.Items.Clear();时,不应将其作为循环计数器,for (int i = 0; i < cartListBox.Items.Count; i++)

cartListBox.Items.Count正在制造问题。

答案 1 :(得分:1)

通过以更现代的方式执行此操作,您可以避免所有循环和错误:

var items = cartListBox.Items
    .Select(item => item.ToString())
    .OrderBy(x => x);

cartListBox.Items.Clear();

cartListBox.Items.AddRange(items);

答案 2 :(得分:0)

cartListBox.Items.Count // is 0 length

你在上一步做了:

cartListBox.Items.Clear(); 

答案 3 :(得分:0)

要将movieArray添加到列表框中,请使用AddRange

  • carListBox.Items.AddRange(movieArray);

要排序,只需设置sorted = true

  • carListBox.Sorted = true;

完整代码如下

  • carListBox.Items.AddRange(movieArray);
  • carListBox.Sorted = true;