对列表框中的项目列表进行排序

Cod*_*ent 10 c# listbox arraylist winforms

我想从列表框中获取一堆项目,将它们添加到数组中,对其进行排序,然后将其放回到不同的列表框中.这是我想出的:

ArrayList q = new ArrayList();
        foreach (object o in listBox4.Items)
            q.Add(o);
        q.Sort();
        listBox5.Items.Add(q.ToString());
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有任何想法吗?

Chr*_*lor 21

您可以使用ListBox.Sorted内置功能

  foreach (object o in listBox4.Items)
  {
    listBox5.Items.Add(o);
  }
  listBox5.Sorted = true;
Run Code Online (Sandbox Code Playgroud)

设置ListBox5.Sorted = true将确保对列表框中的项目进行排序,并且将按正确的顺序添加添加到列表框中的所有后续项目.

当然,这假设您具有示例所建议的简单排序要求.


HCL*_*HCL 13

ArrayList q = new ArrayList(); 
foreach (object o in listBox4.Items) 
        q.Add(o);
} 
q.Sort(); 
listBox5.Items.Clear();
foreach(object o in q){
    listBox5.Items.Add(o); 
}
Run Code Online (Sandbox Code Playgroud)


Tre*_*ann 9

试试这个:

var list = lstBox.Items.Cast<ListItem>().OrderBy(item => item.Text).ToList();
lstBox.Items.Clear();
foreach (ListItem listItem in list)
{
    lstBox.Items.Add(listItem);
}
Run Code Online (Sandbox Code Playgroud)

如果您需要按值排序,只需使用item.Value切换item.Text即可.

请享用!