当前位置: 代码迷 >> C# >> 动态生成的PictureBox控件没法置于最顶层?求解
  详细解决方案

动态生成的PictureBox控件没法置于最顶层?求解

热度:453   发布时间:2016-05-05 05:29:31.0
动态生成的PictureBox控件无法置于最顶层?求解
form1中手动放置了一个picturebox(name为pictureBox2),在.cs文件中用以下代码生成一些picturebox

foreach (DataRow dr in dsHeader.Tables[0].Rows)
                {
                    PictureBox pbx = new PictureBox();
                    Image img = Image.FromFile(Application.StartupPath + "\\images\\" + dr["MenuImg"], false);
                    pbx.BackgroundImage = img;
                    pbx.Name = dr["PowerName"].ToString().ToLower();
                    pbx.Location = new Point(34, 138 + (i * 54));
                    pbx.Width = img.Width;
                    pbx.Height = img.Height;
                    pbx.BringToFront();

并且在这段代码之前设置 pictureBox2.SendToBack();
运行时发现动态生成的pbx被放在窗体中的pbx给遮住了,如果把窗体中手动放置的pbx设置为不可见,则可以在窗体中看到动态生成的pbx,请教大家这要如何解决。

动态生成控件的代码是放在load事件中,会有影响么?
------解决思路----------------------
先Add再BringToFront();
------解决思路----------------------

foreach (DataRow dr in dsHeader.Tables[0].Rows)
                {
                    PictureBox pbx = new PictureBox();
                    Image img = Image.FromFile(Application.StartupPath + "\\images\\" + dr["MenuImg"], false);
                    pbx.BackgroundImage = img;
                    pbx.Name = dr["PowerName"].ToString().ToLower();
                    pbx.Location = new Point(34, 138 + (i * 54));
                    pbx.Width = img.Width;
                    pbx.Height = img.Height;
                    
this.Controls.Add(pbx);
i++;
pbx.BringToFront();
}