C# 以编程方式将标签添加到面板
因此,我有一个表单,我想在加载表单时添加一些带有控件(标签和单选按钮)的面板。C# 以编程方式将标签添加到面板,c#,panel,C#,Panel,因此,我有一个表单,我想在加载表单时添加一些带有控件(标签和单选按钮)的面板。 当然,我想从代码开始(这是为了制作一个带有测试的应用程序,并且问题是随机的) 这就是我到目前为止所做的: List<Panel>ls=new List<Panel>(); private void VizualizareTest_Load(object sender, EventArgs e) { for (int i = 0; i < 4; i++) {
当然,我想从代码开始(这是为了制作一个带有测试的应用程序,并且问题是随机的)
这就是我到目前为止所做的:
List<Panel>ls=new List<Panel>();
private void VizualizareTest_Load(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
Panel pan = new Panel();
pan.Name = "panel" + i;
ls.Add(pan);
Label l = new Label();
l.Text = "l"+i;
pan.Controls.Add(l);
pan.Show();
}
}
Listls=newlist();
私有void vizalizaretest_加载(对象发送方,事件参数e)
{
对于(int i=0;i<4;i++)
{
面板盘=新面板();
pan.Name=“panel”+i;
ls.添加(pan);
标签l=新标签();
l、 Text=“l”+i;
对照组。添加(l);
pan.Show();
}
}
但它不会在表单上显示任何内容。将刚刚创建的面板添加到表单中。控件集合
private void VizualizareTest_Load(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
Panel pan = new Panel();
pan.Name = "panel" + i;
ls.Add(pan);
Label l = new Label();
l.Text = "l"+i;
pan.Location = new Point(10, i * 100);
pan.Size = new Size(200, 90); // just an example
pan.Controls.Add(l);
this.Controls.Add(pan);
}
}
private void vizalizaretest_加载(对象发送方,事件参数e)
{
对于(int i=0;i<4;i++)
{
面板盘=新面板();
pan.Name=“panel”+i;
ls.添加(pan);
标签l=新标签();
l、 Text=“l”+i;
平移位置=新点(10,i*100);
pan.Size=new Size(200,90);//只是一个例子
对照组。添加(l);
this.Controls.Add(pan);
}
}
private void按钮2\u单击(对象发送者,事件参数e)
{
int X=153;
int Y=34;
对于(int i=1;i<4;i++)
{
面板pnl=新面板();
pnl.SuspendLayout();
pnl.位置=新点(X,Y);
pnl.Name=“pnl”+i;
pnl.尺寸=新尺寸(200,57);
pnl.BorderStyle=BorderStyle.FixedSingle;
标签lbl=新标签();
lbl位置=新点(X-100,Y-17);
lbl.Name=“lbl”+i;
lbl.尺寸=新尺寸(75,23);
lbl.Text=“标签”+i;
pnl.控件.添加(lbl);
pnl.ResumeLayout(假);
this.Controls.Add(pnl);
Y=Y+95;
}
}
为什么不显示label2和label3?
您还需要设置面板的位置和大小,并检查控件上是否没有诸如xtrascrollbar之类的控件。然后你需要调用控件。添加你正在显示的控件。如果是sxtraScroll1,则需要将动态标签添加到该标签中。尺寸和位置提示也适用于标签。(正如您所看到的,这可能会在短时间内变得非常复杂)对不起,我将此问题与DevExpress问题混为一谈。它可以是任何控制。如果显示例如PanelControl,则需要在其上添加动态控件。否则可能无法显示。但既然它已经起作用了,一切似乎都很好。
private void button2_Click(object sender, EventArgs e)
{
int X = 153;
int Y = 34;
for (int i = 1; i < 4; i++)
{
Panel pnl = new Panel();
pnl.SuspendLayout();
pnl.Location = new Point(X, Y);
pnl.Name = "pnl"+i;
pnl.Size = new Size(200, 57);
pnl.BorderStyle = BorderStyle.FixedSingle;
Label lbl = new Label();
lbl.Location = new Point(X - 100, Y - 17);
lbl.Name = "lbl" + i;
lbl.Size = new Size(75, 23);
lbl.Text = "lable_" +i;
pnl.Controls.Add(lbl);
pnl.ResumeLayout(false);
this.Controls.Add(pnl);
Y = Y + 95;
}
}
why not display label2 & label3?