C# 动态生成标签

C# Generating Labels Dynamically

我有以下代码使用 for 循环生成标签,但是 for 循环有问题,如果 productList 有 4 个项目,它会生成 1 个标签而不是 4 个。我不知道是什么问题是。

List<models.Car> carList = carController.getCars();    
for (int i = 0; i < carList.Count; i++) 
{
    List<models.Product> productList = productController.getProducts(carList[i].Model);

    for (int j = 0; j < productList.Count; j++) 
    {
        productLabels.Add(new Label());
        var productLabelsPoint = new System.Drawing.Point(200, 40 + i * 50);
        (productLabels[j] as Label).Location = productLabelsPoint;
        (productLabels[j] as Label).Size = new System.Drawing.Size(150, 15);
        (productLabels[j] as Label).Text = productList[j].Title;
        this.Tab.TabPages["tab1"].Controls.Add((productLabels[j] as Label));
    }
}

这里只依赖i,不依赖j:

System.Drawing.Point productLabelsPoint = new System.Drawing.Point(200, 40 + i * 50);

所以您可能会将标签一个一个地叠加起来绘制。 在这种情况下,您需要将 j 添加到组合中,例如:

System.Drawing.Point productLabelsPoint = new System.Drawing.Point(200, 40 + i * 50 + j * 50);

我还会更改您引用标签的方式。 (我无法根据上下文判断您所做的是否正确,因为这取决于 productLabels 变量的实例化方式。)