2017-04-09 60 views
-1

我一直在試圖實現一個組合框,它將按順序列出1-30的數字,但它在應用程序加載時會不斷重新排列()。我已經用盡了我的選擇。組合框在c中重新排列數字1-30#

以下是我已經嘗試了許多其他的人的代碼:

方法1:

for (int i = 1; i <= 30; i++) 
{ 
    string[] numbers = { i.ToString() }; 
    cmbYOWE.Items.AddRange(numbers); 
} 

方法2:

cmbYOWE.Items.AddRange(System.Linq.Enumerable.Range(1, 30).Select(i => (object)i).ToArray()); 

其中cmbYOWE是我的組合框的代碼名稱控制。

順序應該是這樣的:1 2 3 4 5 6 7 8 9 10上 11等,而是,它的排列這樣的:1 10,11,12,13,14,15,16, 17,18,19,2,20,21,22,23,24等等

+0

爲什麼要將這些值存儲爲字符串(並按照這種方式對它們進行排序),當您希望它們按數字順序排序時。將聲明編號更改爲int [](而不是作爲對象強制轉換),這將解決您的問題。 – Peregrine

+0

我投票結束這個問題作爲題外話題,因爲問題,無論是與問題和接受的答案是,它是完全不同的代碼和建議的解決方案。很好,OP的問題已經解決了,但由於這個問題和答案對未來的訪問者沒有價值。 –

回答

-1

這可能是一個不同的問題。您可能會在您的應用程序中使用線程/ Ajax代碼,這會干擾訂單。

無論如何,展開你的方法2,如果允許排序,你可以試試這個。

var numbers = System.Linq.Enumerable.Range(1, 30).Select(i (object)i).ToArray(); 
Array.Sort(numbers); 
comboBox1.Items.AddRange(numbers); 
comboBox1.Sorted = false; 
+0

它仍然是同樣的問題。 – John

+0

您是否在其他地方使用組合框?另外,你的應用程序是否有線程? – Priyanka

+0

檢查Combobox.sorted = true。如果是,請將其設置爲false。 – Priyanka

-1

只要試試這一個。這很簡單!

for (int i = 1; i < 31; i++) 
{ 
    cmbYOWE.Items.Add(i.ToString()); 
} 
+0

我已經完成了。它仍然是同樣的事情。 – John

+0

它在我的應用程序上工作正常。 –

+0

這個問題不在代碼的這一部分。 –