C# 将值数组到列表框中

C# 将值数组到列表框中,c#,asp.net,arrays,sorting,listbox,C#,Asp.net,Arrays,Sorting,Listbox,我有以下代码 我正在尝试将值插入列表框,然后能够按字母顺序使用这些值,并在同一列表框中重新显示它们。由于某些原因,代码无法工作(没有错误-仅当我按下按钮时列表框才会清除) protectedvoid排序按钮\u单击(对象发送者,ImageClickEventArgs e) { string[]movieArray=新字符串[cartListBox.Items.Count]; 对于(int i=0;i

我有以下代码

我正在尝试将值插入列表框,然后能够按字母顺序使用这些值,并在同一列表框中重新显示它们。由于某些原因,代码无法工作(没有错误-仅当我按下按钮时列表框才会清除)

protectedvoid排序按钮\u单击(对象发送者,ImageClickEventArgs e)
{
string[]movieArray=新字符串[cartListBox.Items.Count];
对于(int i=0;i
我认为问题出在最后一个循环中

这样做如下:

cartListBox.Items.Clear();

    for (int i = 0; i < movieArray.Length; i++)
    {
        cartListBox.Items.Add(movieArray[i].ToString());
    }
cartListBox.Items.Clear();
对于(int i=0;i
清除
cartListBox.Items.Clear()时
,它不应作为循环计数器,例如,
for(int i=0;i

cartListBox.Items.Count
产生了问题

cartListBox.Items.Count // is 0 length
您在上一步中执行的操作:

cartListBox.Items.Clear(); 

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

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

cartListBox.Items.Clear();

cartListBox.Items.AddRange(items);

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

  • carListBox.Items.AddRange(movieArray)
要排序,请将sorted=true

  • carListBox.Sorted=true
完整的代码如下

  • carListBox.Items.AddRange(movieArray)
  • carListBox.Sorted=true
啊,谢谢!我知道我现在做了什么,当我清除listbox项目listbox.items.count将重置为0:)谢谢!
var items = cartListBox.Items
    .Select(item => item.ToString())
    .OrderBy(x => x);

cartListBox.Items.Clear();

cartListBox.Items.AddRange(items);