嘿家伙目前有以下代码
我正在尝试将值插入到列表框中,然后能够按字母顺序求助值并在同一列表框中重新显示它们。由于某种原因代码不起作用(没有错误 - 只是当我按下按钮时列表框清除)
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());
}
}
答案 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
要排序,只需设置sorted = true
完整代码如下