📅  最后修改于: 2023-12-03 15:08:52.584000             🧑  作者: Mango
在 C# 中,可以使用 Sort()
方法对 ListBox
控件中的元素进行排序。下面是一个基本的示例:
listBox1.Sorted = true;
它会根据元素的默认比较器对列表框中的项进行排序。但是,如果您需要根据自定义条件进行排序,则需要使用 IComparer
接口。
IComparer
接口:public class MyComparer : IComparer
{
public int Compare(object x, object y)
{
string str1 = x as string;
string str2 = y as string;
return str1.CompareTo(str2);
}
}
Sort()
方法:MyComparer myComparer = new MyComparer();
listBox1.Sorted = false;
listBox1.Items.Sort(myComparer);
这里我们取消了控件自带的排序,然后再通过自定义的 MyComparer
对元素进行排序。
以上例子中,我们使用了 string
的默认比较器。如果您需要根据其他类型的属性进行排序,则需要相应地实现 Compare()
方法。
在实践中,可能会遇到其他一些需要排序的情况,例如对对象进行排序。在这种情况下,您可以通过为自定义类实现 IComparable
接口(例如按 MyClass
的年龄属性排序)来实现排序:
public class MyClass : IComparable<MyClass>
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(MyClass other)
{
if (this.Age > other.Age)
return 1;
else if (this.Age < other.Age)
return -1;
else
return 0;
}
}
然后,您可以通过调用 List<MyClass>.Sort()
方法来对自定义类进行排序。
总之,通过使用 IComparer
和 IComparable
接口,您可以很容易地在 C# 中对 ListBox
控件中的元素进行排序。