我正在反序列化保存记录的文本文件,并将记录转换为Product对象。我将对象添加到列表框并按第一个字段排序,即Price,并设置为double。我将列表框设置为排序:
listBox1.Sorted = true;
但是列表框只对第一个数字排序,即它将$ 15.00放在$ 3.00以上。按整个价格而不仅仅是第一个数字排序的最佳方式是什么?
答案 0 :(得分:1)
问题是它不是按数字排序,而是按字母顺序排序,
请设置listBox1.Sorted = false;
开始按价格sort method对产品清单进行排序,然后将每个元素添加到控件中。
答案 1 :(得分:1)
我猜你必须从ListBox派生才能这样做。覆盖其void Sort()
方法可以解决问题:
public class AlphabeticalSortedListBox : ListBox {
public AlphabeticalSortedListBox() : base() {
Sorted = true;
}
protected override void Sort() {
// apply your sorting algorithm on this.Items here.
// You might want to use an algorithm that does well
// in the best case (e.g. insertion sort [O(n)] to make it easy)
// because in the common situation we have an almost sorted list of Items
}
}