读书人

winforn循环动态添加后面的不显示,该怎

发布时间: 2014-04-23 16:54:27 作者: rapoo

winforn循环动态添加后面的不显示
在panel中动态添加数据,结果后面的不显示
panel1.Controls.Clear();
for (int i = 0; i < 5; i++)
{
Panel pan = new Panel();
pan.Name = "pan" + i.ToString();
Point point = new Point(panel1.Location.X, panel1.Location.Y + (i * 61));
pan.Dock = System.Windows.Forms.DockStyle.None;
pan.Size = new Size(225,60);
pan.Location = point;
pan.BackColor = GetRandomColor();
panel1.Controls.Add(pan);
Label lab = new Label();
lab.Dock = System.Windows.Forms.DockStyle.None;
lab.Size = new Size(100, 20);
lab.Text = "23232323233";
lab.Location = new Point(point.X , point.Y + 5);
pan.Controls.Add(lab);
//panel1.Controls.Add(lab);
Label date = new Label();
date.Dock = System.Windows.Forms.DockStyle.None;
date.Text = "2013-01-22";
date.Location = new Point(point.X + 120, point.Y );
date.Size = new Size(70, 20);
date.Visible = true;
pan.Controls.Add(date);
//panel1.Controls.Add(date);
Label state = new Label();
state.Name = "state" + i.ToString();
state.Dock = System.Windows.Forms.DockStyle.None;
state.Text = " 未完成"+i.ToString();
state.Location = new Point(point.X + 120, point.Y + 20);
state.Size = new Size(70, 20);
//panel1.Controls.Add(state);
pan.Controls.Add(state);
LinkLabel temp = new LinkLabel();
temp.Name = "hiddenID" + i.ToString();
temp.Text = i.ToString();
temp.Visible = false;

pan.Controls.Add(temp);
//pan.Visible = true;
pan.Click+= new EventHandler(pan_Click);
//pan.Refresh();



}
结果如下图winforn循环动态添加后面的不显示,该怎么处理
[解决办法]
Point point = new Point(panel1.Location.X, panel1.Location.Y + (i * 61));
这个相对于窗体位置
你后面添加的控件在panel1里,所以位置要重新设置,不能跟这个point变量走
[解决办法]
date.Location = new Point(point.X + 120, point.Y );
=>
date.Location = new Point(point.X + 120, 固定值 );
别的类似

读书人网 >.NET

热点推荐