C# 保留最后N个项目,并从列表框中删除其他项目
我有一个带列表框的WinC窗体。我正在尝试删除除最后5项之外的所有项目。列表框排序设置为升序 列表框中的项目如下所示:C# 保留最后N个项目,并从列表框中删除其他项目,c#,.net,winforms,listbox-control,C#,.net,Winforms,Listbox Control,我有一个带列表框的WinC窗体。我正在尝试删除除最后5项之外的所有项目。列表框排序设置为升序 列表框中的项目如下所示: 2016-3-1 2016-3-2 2016-3-3 2016-3-4 ... 2016-03-28 这是我删除开始项的代码 for (int i = 0; i < HomeTeamListBox.Items.Count - 5; i++) { try { HomeTeamListBox.Items.RemoveAt(i); }
2016-3-1
2016-3-2
2016-3-3
2016-3-4
...
2016-03-28
这是我删除开始项的代码
for (int i = 0; i < HomeTeamListBox.Items.Count - 5; i++)
{
try
{
HomeTeamListBox.Items.RemoveAt(i);
}
catch { }
}
我还尝试了HomeTeamListBox.Items.RemoveAtHomeTeamListBox.Items[I] 每次循环时,索引i将增加一个,但每次循环时将删除一个元素。您要做的是在前5个过程中删除索引0处的每个元素。所以用你的电流做循环 HomeTeamListBox.Items.RemoveAtHomeTeamListBox.Items[0]
是你想要在身体里的东西。你的索引i每次循环都会增加一个,但是每次循环都会删除一个元素。您要做的是在前5个过程中删除索引0处的每个元素。所以用你的电流做循环 HomeTeamListBox.Items.RemoveAtHomeTeamListBox.Items[0] 是您想要在正文中显示的内容。当列表中的项目超过n个时,您应该从列表的开头删除项目。 这样,您可以保留以下最后n项: 当列表中的项目超过n个时,您应该从列表的开头删除项目。 这样,您可以保留以下最后n项:
这应该对你有用
if(HomeTeamListBox.Items.Count > 5)
{
var lastIndex = HomeTeamListBox.Items.Count - 5;
for(int i=0; i < lastIndex; i++)
{
HomeTeamListBox.Items.RemoveAt(i);
}
}
这应该对你有用
if(HomeTeamListBox.Items.Count > 5)
{
var lastIndex = HomeTeamListBox.Items.Count - 5;
for(int i=0; i < lastIndex; i++)
{
HomeTeamListBox.Items.RemoveAt(i);
}
}
代码是正确的,有什么问题吗?@AshkanMobayenKhiabani代码不正确。它绕过了一些项目。例如,索引1处的项目将不会使用此代码删除。OP删除索引0处的项,然后项向上移动,以前位于索引1处的项现在位于索引0处。因此,当OP试图删除索引1处的项目时,意外地他会看到在开始时位于索引2处的项目被删除,以此类推。代码正确,有什么问题?@AshkanMobayenKhiabani代码不正确。它绕过了一些项目。例如,索引1处的项目将不会使用此代码删除。OP删除索引0处的项,然后项向上移动,以前位于索引1处的项现在位于索引0处。因此,当OP尝试删除索引1处的项目时,意外地他会看到在开始时位于索引2处的项目被删除,以此类推。感谢Reza,修复了它。感谢Reza,修复了它。
for(int i = HomeTeamListBox.Items.Count-5; i>=0; i--)
{
HomeTeamListBox.Items.RemoveAt(i);
}