2014-08-28 140 views
0

我是一名編程新手,我希望通過排序列表框中的項目獲得一些幫助 我有一個循環代碼,在listbox1上添加項目,我想要的是按降序將項目排序爲另一個列表框。 例如,列表框1的輸出是3,6,9直到39排序的降序列表將轉到列表框2。如何在列表框中對項目進行排序

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

回答

1

我要建議一個LINQ排序,然後我只是想,你在三分球將這些數字......只是做反向,並開始要結束和向後工作。

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(); 
+0

感謝您的答覆。我會做同樣的事情,你給我,但我想我是否可以用另一種方式來做,比如按降序排列項目。 – 2014-08-28 15:04:13

+0

@JohnKënnëthIglesia您需要將物品以可存儲的方式存儲。目前,你只是遞增一個整數,所以這些值不會被排序,直到你將它們添加到你的列表框中,所以你需要提取這些項目,然後對它們進行排序並重新添加它們,或者從一開始就將它們生成一個對象你可以排序,然後排序,然後將它們添加到列表框中。 – Kelsey 2014-08-28 15:06:04

+0

感謝您的幫助,我會盡力瞭解您給我的代碼的所有功能。 listbox.DataSource = yourItems.OrderByDescending(i => i); listbox.DataBind(); – 2014-08-28 15:30:31

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()); } 
} 
+0

這個代碼我認爲是在C++上,但我會試着去理解這段代碼的語法:)。我還沒有研究C和C++,我開始使用C# – 2014-08-28 15:32:26

+0

@JohnKënnëthIglesia這是VB.Net代碼。我假設這個答案在你明確表示你正在使用C#之前就已經升級了。 – RubberDuck 2014-08-28 15:41:08

+1

最初,您還將vb.net放入了您的代碼中。 – djv 2014-08-28 15:42:12

相關問題