【问题标题】:Add label to Panel programmatically以编程方式将标签添加到面板
【发布时间】:2013-03-01 10:10:05
【问题描述】:

所以我有一个表单,我想在表单加载时添加一些带有一些控件(标签和单选按钮)的面板。
当然,我想从代码中做到这一点(它是用于制作带有测试的应用程序,问题将是随机的)
这是我到目前为止所做的:

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();
    }

}

但它没有在表单上显示任何内容。

【问题讨论】:

    标签: c# panel


    【解决方案1】:

    将刚刚创建的面板添加到 Form.Controls 集合中

    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);
    
        }
    }
    

    【讨论】:

    • 您还需要设置面板​​的位置和大小
    • 并检查控件上是否没有诸如 xtrascrollbar 之类的控件。然后你需要在你显示的控件上调用 Controls.Add。如果是例如sxtraScroll1 然后你需要将动态的添加到那个。
    • 尺寸和位置提示也适用于您的标签。 (如您所见,这可能会在短时间内变得非常复杂)
    • 对不起,我把这个问题和 DevExpress 混在一起了。它可以是任何控件。如果你显示例如您需要在其上添加动态控件的 PanelControl。否则可能不会显示。但既然它已经工作了,一切似乎都很好。
    【解决方案2】:

    enter image description here

    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?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      相关资源
      最近更新 更多