1

我有一个带有 ListBox 的 C# Winform。我正在尝试删除除最后 5 个项目之外的所有项目。ListBox 排序设置为升序。

ListBox 中的项目如下所示:

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.RemoveAt(HomeTeamListBox.Items[i]);

4

4 回答 4

5

虽然列表中有多个n项目,但您应该从列表的开头删除项目。
这样您就可以保留以下内容的最后n一项ListBox

var n = 5; 
while (listBox1.Items.Count > n)
{
    listBox1.Items.RemoveAt(0);
}
于 2016-03-27T23:40:37.873 回答
0

每次循环时,您的索引 i 都会增加 1,但每次循环时都会删除一个元素。您要做的是在前 5 次通过中删除索引 0 处的每个元素。所以使用你当前的 For 循环

HomeTeamListBox.Items.RemoveAt(HomeTeamListBox.Items[0]);

是你想要的身体。

于 2016-03-27T23:30:35.837 回答
0

这应该适合你;

if(HomeTeamListBox.Items.Count > 5)
{
    var lastIndex = HomeTeamListBox.Items.Count - 5; 
    for(int i=0; i < lastIndex; i++)
    {
       HomeTeamListBox.Items.RemoveAt(i);
    }
}
于 2016-03-27T23:44:27.097 回答
0
for(int i = HomeTeamListBox.Items.Count-5; i>=0; i--)
{
    HomeTeamListBox.Items.RemoveAt(i);
}
于 2016-03-28T00:27:02.997 回答