无法在c#Windows窗体中将控件添加到面板

无法在c#Windows窗体中将控件添加到面板,c#,winforms,controls,C#,Winforms,Controls,我试图在c#Windows窗体中向面板添加一些控件,如标签、图片框等。我的代码如下所示: this.panel1.Controls.Add(this.label1); 每次我把它放在Designer.cs的panel1部分,在我在类和表单之间切换之后,它就会被删除。我这样做是为了能够将面板“转换”为位图,其中包含所有其他控件。尝试: public partial class Form1 : Form { public Form1() { InitializeCo

我试图在c#Windows窗体中向面板添加一些控件,如标签、图片框等。我的代码如下所示:

this.panel1.Controls.Add(this.label1);
每次我把它放在Designer.cs的panel1部分,在我在类和表单之间切换之后,它就会被删除。我这样做是为了能够将面板“转换”为位图,其中包含所有其他控件。

尝试:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.panel1.Controls.Add(this.label1);
    }
}

正如您所看到的,您正在尝试在中修改代码

  #region Windows Form Designer generated code

  ...

  // Designer is supposed to put (or/and remove) any code within this region
  // Do not put any custom code here manually
  this.panel1.Controls.Add(this.label1);

  ...   

  #endregion
你和设计师有冲突。只需让它在专门为此设计(和标记)的区域生成代码;把你的东西放进,比如说,构造器里:

  public MyForm() { 
    // Let .Net initialize the form, create all constrols etc. first
    InitializeComponent(); 

    // Then, run your code here
    this.panel1.Controls.Add(this.label1); 
  }

为什么不把它放在构造函数中:
public mainForm(){InitializeComponent();this.panel1.Controls.Add(this.label1);}
我这样做是为了将面板“转换”成位图,其中包含所有其他控件。这是胡说八道。你不能这样做,相反,你应该告诉我们你的最终目标是什么..我想将包含控件的面板保存为位图,以便它显示不同的图片框,但为什么?您可以a)在运行时使用DrawToBitmap将其保存为位图,也可以编写UserControl。完全不同的事情。所有这些似乎都与你发布的问题无关,顺便说一句。那么目的是什么呢?不要重复你自己,而是用一个用例来解释!!我正在尝试创建一个风险矩阵。它由4个图片框组成,每个图片框中都有显示数字的标签。我想把它放在一个面板中,这样我就可以用“savetobitmap”的方法从该面板中得到一个位图。当我这样做时,面板在运行时看起来不同,控件不在正确的位置。你知道为什么吗?@sfti 2:我想你至少必须修改
位置
属性(父客户端区域的
label1
relative.top上角的位置)为什么不在设计器中首先执行此操作???@TaW:嗯,我认为手动执行此操作有一些原因(问题中没有提到,唉)。如果(…)this.panel1.Controls.Add(this.label1),可能存在条件
。我试图回答为什么不应该把代码放在
设计器中,以及它应该写在哪里是的,这是真的,尽管可能(?!)不在这里,因为他已经试图把它放在设计中,cs;-)-pro当然是你在设计器中得到的所见即所得,它在代码中变成了pita。。