我需要对combo box
的项目进行排序,但0th index
的项目除外。我认为的逻辑是将第一个值存储在某个字符串中。然后应用combo box
项的排序。之后插入存储在0th index
的项目并从另一个索引中删除。但这不符合我的要求。
string str = cmbItems.Items[0].ToString();
cmbItems.Sorted = true;
cmbItems.Items.Insert(0, str);
但是采用上述方法,它没有添加到第0个索引。而是在排序位置。
答案 0 :(得分:3)
好吧,回答我自己的问题。丢失的东西是在排序后禁用combo box
的Sort属性。因为如果combo box
的排序为true
,则对于其他项目将保持为真,并以排序模式添加它们。
因此,在排序完成后,将其设为false
,然后在第0个索引处添加存储的项目。
这是代码 -
string str = cmbItems.Items[0].ToString();
cmbItems.Items.RemoveAt(0);
cmbItems.Sorted = true; // Sort the items
cmbItems.Sorted = false; // Disable the sorting
cmbItems.Items.Insert(0, str);
答案 1 :(得分:0)
你使用什么UI? 例如,如果您使用MVVM并在ObservableCollection中存储项目,则此解决方案可能适用
ObservableCollecton<Item> Items
{
get{ this._items; }
set{
if (this._items != value)
{
this._items = value;
NotifyPropertyChanged(()=>Items);
}
}
}
void Sort()
{
var temp = new ObservableCollection<Item>(Items.Take(1).Union(Items.Skip(1).OrderBy(item => item.Id)));
Items = temp;
}
答案 2 :(得分:0)
您可以使用排序(比较)List.Sort Method (Comparison)
然后,您可以将第0个索引值设置为在所有其他字符串之前。