2015-04-17 1 views
0

Я попытался добавить массив PictureBox в элементы управления, но добавляется только один pictureBox.Добавление массива PictureBox в элементы управления

Label[] l = new Label[15]; 
PictureBox[] pic1 = new PictureBox[15]; 
int y_value = 47; 

for (int i = 0; i < 6; ++i) 
{ 

    l[i] = new Label(); 
    l[i].Text = "Test Text"; 
    l[i].Font = new System.Drawing.Font("Calibri", 8, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128))); 
    l[i].ForeColor = System.Drawing.Color.White; 
    l[i].BackColor = System.Drawing.Color.FromArgb(1, 0, 64); 
    l[i].Size = new System.Drawing.Size(145, 20); 
    l[i].Location = new Point(30, y_value); 
    l[i].Anchor = AnchorStyles.Left; 
    l[i].Visible = true; 
    //this.Controls.Add(l[i]); 

    pic1[i] = new PictureBox(); 
    pic1[i].Image = Image.FromFile(STR_SETTING_PATH + "\\" + STR_IDEA_NO_XXXXX + "_01_nv.png"); 
    pic1[i].Size = new System.Drawing.Size(400, 332); 
    pic1[i].Location = new Point(2, y_value - 10); 
    pic1[i].Anchor = AnchorStyles.Left; 
    pic1[i].Visible = true; 
    //this.Controls.Add(pic1[i]); 

    y_value += 37; 
} 

this.Controls.AddRange(l); 
this.Controls.AddRange(pic1); 

Когда я это делаю, эти метки отображаются правильно, но появляется только один PictureBox. Я попытался изменить позиции X, Y, но это не помогло. Отладчик отображает списки массива PictureBox, инициализированные. Есть ли что-то, что я делаю неправильно или что лучше подходит для добавления PictureBox с ярлыком над ним динамически.

+1

вы увеличиваете y_value +37 высота ваш pictureBox равен 332. Поэтому они могут перекрываться. – stefankmitph

+0

Да ... Была моя ошибка ... Глупый я ... – sk3145

+0

они _до_ перекрываются. – stefankmitph

ответ

0

Я протестировал ваш код, и на самом деле они перекрываются. (увеличенный красный цвет в backgroundcolor на y_value/2 на каждой итерации).

enter image description here

набор высоты вашего PictureBox к (Fe) 20, и вы увидите, что они показывают, просто отлично:

Label[] l = new Label[15]; 
PictureBox[] pic1 = new PictureBox[15]; 
int y_value = 47; 

for (int i = 0; i < 6; ++i) 
{ 

    l[i] = new Label 
    { 
     Text = "Test Text", 
     Font = new System.Drawing.Font("Calibri", 8, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte) (128))), 
     ForeColor = System.Drawing.Color.White, 
     BackColor = System.Drawing.Color.FromArgb(1, 0, 64), 
     Size = new System.Drawing.Size(145, 20), 
     Location = new Point(30, y_value), 
     Anchor = AnchorStyles.Left, 
     Visible = true 
    }; 

    pic1[i] = new PictureBox 
    { 
     Size = new System.Drawing.Size(400, 20), 
     Location = new Point(2, y_value - 10), 
     Anchor = AnchorStyles.Left, 
     Visible = true, 
     BackColor = Color.FromArgb(y_value/2, 0, 0) 
    }; 

    y_value += 37; 
} 

this.Controls.AddRange(l); 
this.Controls.AddRange(pic1); 

enter image description here