[英]Sort a checkboxlist alphabetically, in place, in C# after the data is added
控件( 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);
由於ListItemCollection實現IEnumerable,所以我想也許可以將其轉換為IEnumerable <ListItem>之類的東西。 我不知道該怎么做。 這是我能想到的最好的方法:
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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.