2015-04-28 1 views
0

У меня есть код ниже для генерации меток, используемых для цикла, однако есть проблема с циклом for, если у productList есть 4 элемента, он генерирует 1 метку вместо 4. Я не могу изобразить в чем проблема.C# Создание ярлыков динамически

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)); 
    } 
} 
+0

которые перечислены? carlist или productList? –

+0

В вопросе, когда вы говорите «если в списке есть 4 элемента», «список» означает «productList» или «carList»? –

+0

@ LeonBambrick для каждого приращения carList, productList обновляется новыми данными и генерирует новые ярлыки до тех пор, пока не будет закончен автозапуск. – PRCube

ответ

4

Это зависит только от г, а не на 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.)

+0

чуть выше моего кода, вот как я объявляю метки. ArrayList productLabels = new ArrayList(); – PRCube

+1

Скорее добавьте новую переменную, сообщающую номер добавляемой метки, и используйте ее для расчета позиции, поскольку они могут все еще перекрываться. И ссылка на ярлык из Списка была определенно неправильной. –