2017-04-09 61 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

这个问题不在代码的这一部分。 –