어떻게 정렬한 목록의 제어 입력

0

질문

내가 만든 목록에서 컨트롤 양식을 다음과 같다:

            List<Control> list = new List<Control>();
            foreach (Control c in this.Controls)
            {
                if (c.GetType() == typeof(Label))
                {
                    list.Add(c);
                }
            }

모든 제어는 이 목록은 상표가 필요하므로 정렬하는 이 목록의 제어 ,오름차순으로 그래서 내가 사용하는 종류 의 방법 클래스 목록 다음과 같다:

list.Sort();

하지만 그것이 나에게 말하기를 System.InvalidOperationException: 'Failed to compare two elements in the array.' ArgumentException: At least one object must implement IComparable.

이후 나는 그것을 정렬을 사용하여 포커스를 받 값 또는 적어도 그것의 이름은,그것을 명확하지 않습니다. 나는 무엇을 해야 통과를 정렬 방법이나 무엇을 사용해야 하는 대신 이 방법은?

c# controls list sorting
2021-10-27 17:14:53
2

최고의 응답

2

사용할 수 있습니 페이 인터페이스 메서드의 OrderBy 로 제공하는 기능 지정하는 요소를 비교하는 대안으로 사용하여 정렬합니다.

using System;
using System.Collections.Generic;
using System.Linq;
                    
public class Program
{
    public static void Main()
    {
        var controls = new List<B>() {new B() {Index = 0}, new B() {Index = -1}};
        var sortedControls = controls.OrderBy(x => x.Index).ToList();
        Console.WriteLine(controls[0].Index); // -1
        Console.WriteLine(controls[1].Index); // 0
    }
}

public class B
{
    public int Index {get; set;}
}
2021-10-27 17:27:05
1

전달할 수 있습니다 Comparison 기능 list.Sort

var list = this.Controls.OfType<Label>().ToList();
list.Sort((a, b) => a.TabIndex.CompareTo(b.TabIndex));
2021-10-27 17:22:01

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................