我有一个组合框,我用 1 到 40 的数字填充它,但它显示它们为 1 比 10-19 比 2 比 20-29 等等,即使我试图通过代码插入数据
for(int i=0;i<41;i++)
Combobox.Items.Inert(i,(i+1).ToString())
也尝试了上面的代码而不转换为字符串,但它再次显示相同的结果,我认为它将它们按升序排列,但这不是我想要的请告诉我如何做到这一点,以便它按 1-40 的顺序显示数字谢谢
我有一个组合框,我用 1 到 40 的数字填充它,但它显示它们为 1 比 10-19 比 2 比 20-29 等等,即使我试图通过代码插入数据
for(int i=0;i<41;i++)
Combobox.Items.Inert(i,(i+1).ToString())
也尝试了上面的代码而不转换为字符串,但它再次显示相同的结果,我认为它将它们按升序排列,但这不是我想要的请告诉我如何做到这一点,以便它按 1-40 的顺序显示数字谢谢
我相信这个问题就是你要找的。您将不得不自己进行排序并关闭似乎的自定义。
从文章中,这是组合框排序的反射器代码(即私有):
public int Compare(object item1, object item2)
{
if (item1 == null)
{
if (item2 == null)
{
return 0;
}
return -1;
}
if (item2 == null)
{
return 1;
}
string itemText = this.comboBox.GetItemText(item1);
string str2 = this.comboBox.GetItemText(item2);
return Application.CurrentCulture.CompareInfo.Compare(itemText, str2, CompareOptions.StringSort);
}
因此,它将所有内容都转换为字符串,因此关闭排序是您的最佳选择。
ComboBox 的排序总是按字母顺序和升序进行。
Sorted
如果你不想要这种行为,那么你可以简单地通过将属性设置为来关闭它false
。
你总是可以封装它。
public class Item : IComparer
{
public Item(int value) { this.Value = value; }
public int Value { get; set; }
public int CompareTo(Item item)
{
int ret = -1;
if (Value < item.Value)
ret = -1;
else if (Value > item.Value)
ret = 1;
else if (Value == item.Value)
ret = 0;
return ret;
}
}
那么简单...
for(int i = 0; i < 40; i++)
comboBox.Items.Add(new Item(i));
ComboBox always adds and sorts objects you add by their "To String" function.
What you could always do is add an empty string prior to the numbers
if(i < 10){ (Combo.Items.Add(i.ToString(StringFormat(" i",i)))); }
else { Combo.Items.Add(i); }
Then when you retrieve it parse it as an integer. (Not as stable as it should be, but a good start).
Try this :
for(int i=0;i<41;i++)
Combobox.Items.Add(i);
尝试:-
for(int i=0;i<40;i++)
combobox.Items.Add((i+1).ToString("D2"));