0

以下のコードが入力されたリストボックスがありますが、その中の項目をソートしたいと考えています。リストボックス内のアイテムを並べ替えるにはどうすればよいですか

public void refreshInterface()
{
    foreach (DataSet1.xspGetAnalysisUsageTypesRow homeForms in myDataSet.xspGetAnalysisUsageTypes)
    {
        var forms = new FormItems(homeForms);
        listBox1.Items.Add(forms);
    }
}

FormItem クラス:

public class FormItems
{
    public DataSet1.xspGetAnalysisUsageTypesRow types { get; set; }

    public FormItems(DataSet1.xspGetAnalysisUsageTypesRow usageTypes)
    {
        types = usageTypes;
    }

    public override string ToString()
    {
        return this.types.xlib_Desc;
    }
}
4

2 に答える 2

2

LINQ を使用して、ソース アイテムまたはリスト ボックスのアイテムを直接更新できます。

list.OrderBy(x => x.Property)

x.Property をソートするプロパティに設定できる場所。その並べ替えは、デフォルトで昇順になりますが、これはあなたが望むものです。それ以外の場合は、単に使用しますOrderByDescending()

于 2012-09-19T16:40:59.977 に答える
0

これは、LisBox アイテム A->Z または Z->A をソートするための私のソリューションです。

public void Sorting(ListBox lst, String order) {
                 if (order.Equals("A-Z"))
                {
                    if (lst.Items.Count > 1)
                    {
                        bool swapped;
                        do
                        {
                            int counter = lst.Items.Count - 1;
                            swapped = false;

                            while (counter > 0)
                            {
                                // Compare the items 
                                if (lst.Items[counter].ToString().CompareTo(lst.Items[counter -
    1].ToString()) < 0)
                                {
                                    // Swap the items.
                                    object temp = lst.Items[counter];
                                    lst.Items[counter] = lst.Items[counter - 1];
                                    lst.Items[counter - 1] = temp;
                                    swapped = true;
                                }
                                // Decrement the counter.
                                counter -= 1;
                            }
                        }
                        while ((swapped == true));
                    }
                }
                if (order.Equals("Z-A")) {
                    if (lst.Items.Count > 1)
                    {
                        bool swapped;
                        do
                        {
                            int counter = lst.Items.Count - 1;
                            swapped = false;

                            while (counter > 0)
                            {
                                // Compare the items 
                                if (lst.Items[counter].ToString().CompareTo(lst.Items[counter -
    1].ToString()) > 0)
                                {
                                    // Swap the items.
                                    object temp = lst.Items[counter];
                                    lst.Items[counter] = lst.Items[counter - 1];
                                    lst.Items[counter - 1] = temp;
                                    swapped = true;
                                }
                                // Decrement the counter.
                                counter -= 1;
                            }
                        }
                        while ((swapped == true));
                    }
                }

            }
于 2016-02-26T02:06:04.620 に答える