在c#

时间:2015-12-18 18:44:15

标签: c# winforms

我正在尝试为面板中动态创建的图片框添加一些生命和颜色。

我写这段代码:

Panel panel_main = new Panel();
this.Controls.Add(panel_main);
panel_main.Size = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
panel_main.BackColor = Color.Black;

PictureBox[] logos = new PictureBox[6];

for (int i  = 0; i < 6; i++)
{
    this.Controls.Add(logos[i]);
    logos[i] = new PictureBox();
    logos[i].BackColor = Color.Yellow;
    logos[i].Location = new Point(i * 10, i * 10);
    logos[i].Size = new Size(i * 40, i * 10);
    logos[i].Visible = true;
}

图片框显示在屏幕上,但尺寸和颜色也没有正确显示!

2 个答案:

答案 0 :(得分:2)

这里有一些问题。

首先,你在这一行上没有添加任何东西

this.Controls.Add(logos[i]);

将此行移至循环的底部。

其次,你的第一个盒子的尺寸为零,实际上可能不是问题,但你知道。

第三是你如何添加控件。

this.Controls.Add(logos[i]);

这会将图片框放在表格上。我的直觉表明你实际上想要使用

panel_main.Controls.Add(logos[i]);

将其添加到面板而不是表单。如果您确实想要使用该表单,请在图片框上添加控件调用BringToFront方法。

logos[i].BringToFront();

答案 1 :(得分:0)

// this.Controls.Add(logos[i]); // logos[i] is null yet
logos[i] = new PictureBox();
logos[i].BackColor = Color.Yellow;
logos[i].BorderStyle = BorderStyle.FixedSingle;
// 1. add pictureBoxes into panel
// 2. add pictureBoxes after you created them, not before
panel_main.Controls.Add(logos[i]);

enter image description here