我是新手为窗体编写C#程序。当我使用
{Detail_ListBox.Sorted = true;按升序排序我的ListBox,但我得到的不是我想要的
-1
-2
-3
0
1
2
3
它能够对正值进行排序,但我想对负值进行排序。正值成为
-3
-2
-1
0
1
2
3
这只是一个例子,实际值可以包括从-300到+300。
任何人都可以帮助我,我应该使用哪些陈述来排序-ve和amp; + ve值?
答案 0 :(得分:1)
使用{Detail_ListBox.Sorted = true;它对像string这样的值进行排序。您应该首先对int值进行排序,然后将它们放入ListBox而不使用Detail_ListBox.Sorted = true;
答案 1 :(得分:0)
如果你有一个整数列表,如下:
List<int> integers = somelist;
您可以使用以下方式对其进行排序:
integers.Sort();
然后分配到列表框:
Detail_ListBox.DataSource = integers;
或者:
Detail_ListBox.Items = integers.Select(x => x.ToString()).ToArray();
答案 2 :(得分:0)
如果您的ListBox
有一些DataSource
,您可以尝试对DataSource
进行排序。如果没有,您可以尝试这种扩展方法:
public static class ListBoxExtension
{
public static void SortBy<TElement>(this ListBox list,
Func<TElement, object> fieldSelector)
{
var items = list.Items.OfType<TElement>()
.OrderBy(fieldSelector)
.Cast<object>().ToArray();
list.BeginUpdate();
list.Items.Clear();
list.Items.AddRange(items);
list.EndUpdate();
}
public static void SortByDescending(this ListBox list,
Func<TElement, object> fieldSelector)
{
var items = list.Items.OfType<TElement>()
.OrderByDescending(fieldSelector)
.Cast<object>().ToArray();
list.BeginUpdate();
list.Items.Clear();
list.Items.AddRange(items);
list.EndUpdate();
}
}
//Usage
listBox1.SortBy<object>(x=>x);
//if your listBox1 has elements of the same type Item, use it like this:
listBox1.SortBy<Item>(x=>x.SomeProperty);