列表框仅对第一个数字排序

时间:2011-11-21 15:08:13

标签: c# sorting listbox

我正在反序列化保存记录的文本文件,并将记录转换为Product对象。我将对象添加到列表框并按第一个字段排序,即Price,并设置为double。我将列表框设置为排序:

listBox1.Sorted = true;

但是列表框只对第一个数字排序,即它将$ 15.00放在$ 3.00以上。按整个价格而不仅仅是第一个数字排序的最佳方式是什么?

2 个答案:

答案 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
    }
}