我尝试使用C#在Windows窗体中创建排行榜,但我无法找到解决方案。
下面是我当前的代码。
lstleaderboard.Items.Add(int.Parse(txtScore.Text));
ArrayList Sorting = new ArrayList();
foreach (var o in lstleaderboard.Items)
{
Sorting.Add(o);
}
Sorting.Sort(new ReverseSort());
lstleaderboard.Items.Clear();
foreach (var o in Sorting)
{
lstleaderboard.Items.Add(o);
}
我试着这样修改代码:
lstleaderboard.Items.Add(int.Parse(txtScore.Text));
ArrayList Sorting = new ArrayList();
foreach (var o in lstleaderboard.Items)
{
Sorting.Add(o);
}
Sorting.Sort(new ReverseSort());
lstleaderboard.Items.Clear();
foreach (var o in Sorting)
{
lstleaderboard.Items.Add(o + txtName.Text );
}
if (lstleaderboard.Items.Count == 11)
{
lstleaderboard.Items.RemoveAt(lstleaderboard.Items.Count - 1);
}
但这并不真正起作用,因为它也在对名字排序,这扰乱了记分牌,并且它显示了错误的结果,例如,第一号可能是第三号。
我还在学习中,所以如果我的问题很傻或者我的代码很“奇怪”,我道歉
谢谢
这也是我的排序类:
public class ReverseSort : IComparer
{
public int Compare(object x, object y)
{
return Comparer.Default.Compare(y, x);
}
}
1条答案
按热度按时间8wigbo561#
所以
lstLeaderBoard
只是一个整数列表,所以你可以安全地使用整数比较,你这样做的方式,它只是在对象类型上使用一些默认的比较器,这与整数相去甚远。简单的LINQ
OrderBy
就足够了: