添加数据后,在 C# 中按字母顺序对复选框列表进行排序

本文关键字:复选框 顺序 列表 排序 数据 添加 | 更新日期: 2023-09-27 18:33:59

控件

ListItems)是动态创建的,因此无法对预插入进行排序。

我已经尝试了一个解决方案,它可以完成这项工作(在列表上排序然后重建控件),但我想要一个更优雅的解决方案。

为了完整起见,以下是我当前的解决方案:

        List<ListItem> lli = new List<ListItem>();
        foreach (ListItem item in cblGIFFlags.Items) lli.Add(item);
        cblGIFFlags.Items.Clear();
        bool sorting = true;
        while (sorting)
        {
            sorting = false;
            for (int i = 0; i < lli.ToArray().Length - 1; i++)
            {
                ListItem x = lli[i];
                ListItem y = lli[i + 1];
                if (Comparer<String>.Default.Compare(x.Text,y.Text) > 0)
                {
                    lli[i] = y;
                    lli[i + 1] = x;
                    sorting = true;
                }
            }
        }
        foreach (ListItem item in lli) cblGIFFlags.Items.Add(item);

添加数据后,在 C# 中按字母顺序对复选框列表进行排序

由于ListItemCollection实现了IEnumerable,我想也许我可以投射到IEnumerable或其他什么。 我不知道该怎么做那个演员表。 这是我能想到的最好的:

var items = new List<ListItem>();
foreach (ListItem item in listBox.Items) items.Add(item);
listBox.Items.Clear();
listBox.Items.AddRange(items.OrderBy(i=>i.Value).ToArray());