如何从头开始就添加到For循环而不循环?

时间:2019-10-24 00:25:37

标签: c# .net winforms

我试图将一个列表显示在我的组合框中,每次用户输入新的船名和船牌时,他们都会被添加到组合框中。

我已经尝试过使用for循环来做到这一点,但这给了我一个我理解如何修复它的bug。

for(int i = 0; i < boatList.Count; i++)
    {
        BoatSelector.Items.Add(boatList[i].GetboatName() + " - " + boatList[i].GetboatLicense());
    }     

预期结果:用户输入的名称+许可证应添加到组合框中。

实际结果:添加名称+许可证,然后for循环,循环回到0,并重新添加相同的名称和许可证,同时还添加任何更新的名称和许可证。

1 个答案:

答案 0 :(得分:-1)

'从新索引开始进行for循环'

  

我不想在列表的开头存储新的输入,也不想清除列表,我只是想找到一种从新索引开始for循环的方法,而不是显示再次返回上一个索引。

这是您要找的吗?

var last = boatList.Last() // using System.Linq;
var last = boatList[boatList.Count/Count()/Length - 1] // etc. 

BoatSelector.Items.Add(lastItem.GetboatName() + " - " + last.GetboatLicense());

“在新索引上”

  

我想要存储而不是清除这些项目,我将如何在新索引上开始循环?

您的意思是列表的开头吗?如果是这样,您可以使用InsertAt

BoatSelector.Items.InsertAt(0,boatList[i].GetboatName() + " - " + boatList[i].GetboatLicense());

'重新添加相同的内容'

  

并重新添加相同的名称和许可证,同时还添加任何更新的名称和许可证

我认为您要多次添加项目。

for(int i = 0; i < boatList.Count; i++)
{
    BoatSelector.Items.Add(boatList[i].GetboatName() + " - " + boatList[i].GetboatLicense());
}   

(... at another time)


for(int i = 0; i < boatList.Count; i++)
{
    BoatSelector.Items.Add(boatList[i].GetboatName() + " - " + boatList[i].GetboatLicense());
} 

这意味着BoatSelector.Items总是在增长。

您可以Clear() Items或分配新列表:

BoatSelector.Items = boatList
          .Select( item => item.GetboatName() + " - " + item.GetboatLicense())
          .ToList();
相关问题