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 变量的实例化方式。)
我有以下代码使用 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 变量的实例化方式。)