如何对列表框中的项目进行排序
本文关键字:项目 排序 列表 | 更新日期: 2023-09-27 18:19:56
我是编程新手,我想从列表框中排序项目中获得一些帮助我有一个循环代码,它在listbox1上添加项目。我想要的是将项目按降序排序到另一个listbox中。例如,列表框1的输出为3,6,9,直到39,排序后的降序列表将转到列表框2。
int thingsforlist;
do{
listbox.item.add(thingsforlist);
thingsforlist = thingforlist+3;
}
while (thingsforlist<=39);
使用此函数,您可以按降序或升序对列表框中的项目进行排序。
Private Sub sortListBoxItems(ByRef lb As ListBox, ByVal ascending As Boolean)
Dim items As List(Of Object)
items = lb.Items.OfType(Of Object)().ToList()
lb.Items.Clear()
If ascending Then
lb.Items.AddRange(items.OrderBy(Function(i) i).ToArray())
Else
lb.Items.AddRange(items.OrderByDescending(Function(i) i).ToArray())
End If
End Sub
或者如果你喜欢C#,
private void sortListBoxItems(ref ListBox lb, bool ascending)
{
List<object> items;
items = lb.Items.OfType<object>().ToList();
lb.Items.Clear();
if (ascending)
{ lb.Items.AddRange(items.OrderBy(i => i).ToArray()); }
else
{ lb.Items.AddRange(items.OrderByDescending(i => i).ToArray()); }
}
我本来打算建议linq排序,然后我就想,你在3秒内加数字。。。倒过来做,从你想结束的地方开始,倒过来做。
int thingsforlist = 39;
do
{
listbox.item.add(thingsforlist);
thingsforlist -= 3;
}
while (thingsforlist > 0);
如果你有某种可排序的对象,你可以使用linq和OrderByDescending
,但我认为你的情况看起来不需要进入,至少根据你提供的代码片段。
编辑:如果您希望绑定一些有序数据,这里还有另一个选项:
List<int> yourItems = new List<int>();
int thingsforlist = 0;
do
{
yourItems.Add(thingsforlist);
thingsforlist += 3;
}
while (thingsforlist <= 39);
listbox.DataSource = yourItems.OrderByDescending(i => i);
listbox.DataBind();