C#对第一个除

时间:2016-06-21 07:45:47

标签: c# combobox

我需要对combo box的项目进行排序,但0th index的项目除外。我认为的逻辑是将第一个值存储在某个字符串中。然后应用combo box项的排序。之后插入存储在0th index的项目并从另一个索引中删除。但这不符合我的要求。

string str = cmbItems.Items[0].ToString();
cmbItems.Sorted = true;
cmbItems.Items.Insert(0, str);

但是采用上述方法,它没有添加到第0个索引。而是在排序位置。

3 个答案:

答案 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个索引值设置为在所有其他字符串之前。