2016-06-21 1 views
-1

0th index 항목을 제외한 combo box 항목을 정렬해야합니다. 내가 생각한 논리는 문자열에 첫 번째 값을 저장하는 것입니다. 그런 다음 combo box 항목의 정렬을 적용하십시오. 그런 다음 항목을 0th index에 삽입하고 다른 색인에서 제거하십시오. 그러나 이것은 나의 요구 사항에 대한 적절한 해결책이 아닙니다.C# 첫 번째 항목을 제외한 콤보 상자 항목 정렬

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

그러나 위의 방법을 사용하면 0 번째 색인에 추가되지 않습니다. 대신 정렬 된 위치에 있습니다.

+6

왜하지 않습니다 - 여기

코드인가? 그 접근 방식에 어떤 문제가 있습니까? – Sayse

+0

[mcve] – Mafii

+2

을 제공하십시오. 질문에 분명히 약간의 코드를 추가하면 도움이 될 것입니다 ... – ardila

답변

3

글쎄, 내 자신의 질문에 대답. 누락 된 것은 정렬 후 combo box의 Sort 등록 정보를 사용 불가능하게합니다. combo box의 정렬이 true 인 경우 이후 항목에 대해서는 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); 
+0

좋은 답변 !!! –

0

어떤 UI를 사용하십니까? 당신이 ObservableCollection에에서 MVVM 저장 항목을 사용하는 경우 예를 들어,이 솔루션은

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; 
} 
+1

SO에 오신 것을 환영합니다. OP가 사용하는 것을 가정하지 마십시오. 의견에 묻기 – ardila

+1

@ardila 괜찮을 수도 있습니다. GUI 프레임 워크 op가 어떤 용도로 사용 되든 관계 없습니다. WPF/MVVM – Mafii

+1

@Mafi가 동의하지 않으면 코드를 추출하여 다른 곳에서 사용해야합니다. 그 질문은 의미심장하게 대답 될만큼 명확하고 구체적이지 않습니다. 그것이 주석을위한 것입니다. 질문이 나중에 정제되고 OP가 MVVM을 사용하지 않는 것으로 판명되면이 대답은 쓸모가 없습니다. – ardila

0

당신은 정렬 사용할 수 있습니다 (비교) appliable 수 있습니다 List.Sort Method (Comparison)

할 수 있습니다 그 전에 될 수있는 0 번째 인덱스 값을 설정하는 모든 다른 문자열.

관련 문제