0

我是编程新手,我希望从列表框中的项目排序中得到一些帮助 例如,列表框 1 的输出是 3,6,9 直到 39,排序后的降序列表将转到列表框 2。

int thingsforlist;
do{
     listbox.item.add(thingsforlist); 
     thingsforlist = thingforlist+3;
  }
while (thingsforlist<=39);
4

2 回答 2

2

使用此功能,您可以对列表框中的项目进行降序或升序排序。

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()); }
}
于 2014-08-28T15:06:20.240 回答
1

我打算建议一个 linq 排序,然后我只是想,你在 3s 中添加数字......只需反向执行并从你想要结束的地方开始并向后工作。

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();
于 2014-08-28T14:57:25.827 回答