콤보 상자에서 사용자 지정 정렬/표시 순서를 가질 수 있습니까? 다른 모든 것보다 특별한 값인 "MasterValue"를 원한다고 가정 해보십시오.C# 사용자 지정 콤보 상자 정렬
4
A
답변
4
대신 문자열을 추가하는,에서 IComparable을 구현하고 ToString을 재정의하는 클래스를 만듭니다.
그런 다음 데이터 소스를 얻을 수
1. 가치 추가 필드를 반환하는 뷰 (즉, 저장 프로 시저)와 같은 데이터 소스를 작성하여 콤보
4
다음 코드는이 트릭을 수행합니다.
정렬 할 항목의 개별 목록을 만든 다음 AddRange를 사용하십시오.
comboBox1.Items.Add("Master"); List<String> listToSort = new List<String>(); listToSort.Add("6nd"); listToSort.Add("3nd"); listToSort.Add("5nd"); listToSort.Add("4nd"); listToSort.Add("2nd"); listToSort.Sort(); comboBox1.Items.AddRange(listToSort.ToArray<String>());
+0
둘째, 셋째, fourton? – Lars
1
해당 클래스의 인스턴스를 추가하고 추가를 추가 행을 데이터보기에 추가하고 추가 필드의 값은 0입니다.
그런 다음 해당 필드를 처음에 정렬 한 다음 필드의 설명을 기준으로 정렬합니다.
이렇게하면 항상 '마스터 값'을 먼저 입력 한 다음 다른 알파벳순으로 정렬합니다.
private void PopulateCombo()
{
// get data view that returns 3 columns,
//master sort column set to 1, id, and description //
DataView view = GetSource();
// add a new row to the data source that has column values
// 0 for master sort column (all others are returned 1
// an appropriate ID and a description
// data view columns = master sort column, id, description
view.Table.Rows.Add(new object[] {0, 1, "MasterValue"});
// sort first by master column then description //
view.Sort = "MasterSortColumn ASC, Description ASC";
combo.DataSource = view;
combo.ValueMember = "Id";
combo.DisplayMember = "Description";
}
관련 문제
- 1. 사용자 지정 콤보 상자 확인란
- 2. 콤보 상자 자동 완성 사용자 지정 기능
- 3. WPF 콤보 상자 형 사용자 지정 컨트롤
- 4. DataGridview의 C# 콤보 상자
- 5. C# 콤보 상자 선택
- 6. C# 콤보 상자 winform
- 7. 목록 상자 정렬 C#
- 8. 사용자 지정 정렬 순서
- 9. 정렬 할 수있는 콤보 상자 및 열
- 10. 사용자 지정 드롭 다운 및 콤보 상자 문제가 있습니까?
- 11. .NET 콤보 상자 자동 완성에 대한 사용자 지정 검색
- 12. LINQ로 사용자 지정 정렬
- 13. Gridview에서 사용자 지정 정렬
- 14. C#에서 문자열 배열의 사용자 지정 정렬
- 15. 콤보 상자
- 16. 콤보 상자 WPF에서 콤보 상자 항목 제거
- 17. 웹용 콤보 상자 컨트롤의 예
- 18. 테이블의 사용자 지정 정렬 순서
- 19. 바운드 DataGridView의 사용자 지정 정렬
- 20. DataTables 콤보 상자 너비
- 21. 플래시 콤보 상자 구성 요소 사용자 정의
- 22. flex 콤보 상자 화살표 사용자 정의 이미지
- 23. SearchBox 용 사용자 정의 콤보 상자
- 24. WPF 사용자 지정 목록 상자
- 25. 사용자 지정 대화 상자 시작
- 26. Android 사용자 지정 대화 상자
- 27. 사용자 지정 대화 상자 만들기
- 28. 사용자 지정 메시지 상자 조언
- 29. 사용자 지정 컨트롤 상자 단추
- 30. Wix 사용자 지정 대화 상자
그래도 나는 "MasterValue"를 표시된 값으로 사용하고 맨 위에 있어야하는 "MasterValue"를 제외한 모든 개체의 ToString() 값에 따라 정렬합니다. 당신의 대답은 속임수입니까? – Toto
@Duaner : 아이디어는 comboBox가 IComparable 인터페이스의 CompareTo 함수를 호출하는 요소를 정렬한다는 것입니다. 당신이해야 할 일은 String 클래스 주위에 래퍼를 만드는 것입니다. ToString은 comboBox에 원하는 문자열을 반환하고 CompareTo는 원하는 순서를 유지하도록합니다. String가 "MasterValue"인 경우 CompareTo는 항상 <0을 반환하므로 "MasterValue"가 항상 첫 번째입니다. –
.NET 3.5에서는이 기능이 작동하지 않습니다. System.Windows.Forms.ComboBox에는 IComparable 인터페이스 대신 ToString()을 호출하는 GetItemText() 속성을 실제로 호출하는 내부 ItemComparer 클래스가 있습니다. –