You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何对Control类型的List集合按TabIndex或Name属性排序

问题原因

无参Sort方法要求集合中的元素必须实现IComparable接口才能自动比较大小,WinForm的Control类没有实现该接口,因此直接调用会抛出你遇到的错误。

解决方法

你可以通过两种常用方式实现按指定属性升序排序:

方法1:使用Sort方法的重载传入自定义比较逻辑

直接给Sort传入Lambda表达式定义两个控件的比较规则:

  • 按TabIndex升序排序:
list.Sort((a, b) => a.TabIndex.CompareTo(b.TabIndex));
  • 按Name属性升序排序:
list.Sort((a, b) => a.Name.CompareTo(b.Name));

方法2:使用LINQ的OrderBy方法实现(写法更简洁直观)

// 按TabIndex排序
var sortedList = list.OrderBy(c => c.TabIndex).ToList();

// 按Name排序
var sortedList = list.OrderBy(c => c.Name).ToList();

额外优化

你原来筛选Label控件的代码也可以用LINQ简化为一行:

List<Control> list = this.Controls.OfType<Label>().Cast<Control>().ToList();

内容的提问来源于stack exchange,提问作者WideWood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:15:05