ว่าจะค่อยๆจัดการกับรายชื่อของควบคุมประเภท

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.

ตั้งแต่ฉันอยากจะค่อยๆจัดการกับมันใช้ TabIndex ค่าหรืออย่างน้อยมัน ชื่อของมันยังไม่ค่อยแน่ใจสำหรับฉัน สิ่งที่ฉันควรจะผ่านไป แบบ วิธีการหรือสิ่งที่ฉันควรจะใช้แทนที่จะเป็นวิธีการนี้?

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

คำตอบที่ดีที่สุด

2

คุณสามารถใช้ IEnumerable ส่วนติดต่อวิธีการของ 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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่