C# 如何在代码中从面板内的停靠控件获得相同的效果,就像从设计器停靠控件一样?

C# 如何在代码中从面板内的停靠控件获得相同的效果,就像从设计器停靠控件一样?,c#,controls,panel,dock,C#,Controls,Panel,Dock,正如你在图片上看到的那样,这个问题。如果我用如下代码填充面板: private void Form1_Load(object sender, EventArgs e) { Panel pnl = new Panel(); PictureBox pb = new PictureBox(); TextBox txt = new TextBox(); pnl.BorderStyle = BorderStyle.FixedSingle; pb.BorderSty

正如你在图片上看到的那样,这个问题。如果我用如下代码填充面板:

private void Form1_Load(object sender, EventArgs e)
{
    Panel pnl = new Panel();
    PictureBox pb = new PictureBox();
    TextBox txt = new TextBox();

    pnl.BorderStyle = BorderStyle.FixedSingle;
    pb.BorderStyle = BorderStyle.FixedSingle;
    pb.Dock = DockStyle.Top;
    txt.Dock = DockStyle.Fill;

    pnl.Controls.Add(pb);
    pnl.Controls.Add(txt);
    this.Controls.Add(pnl);
}

文本框仍然在面板内的0,0位置

您必须首先使用DockStyle.Fill添加控件

也可以在代码中使用Controls.SetChildIndex方法并使用DockStyle.Fill将控件的ChildIndex设置为与其他方法相同的较低编号


在Visual Studio的文档大纲视图中,您可以对控件进行上下排序,以设置x.Designer.cs文件中的ChildIndex。

据我所知,您必须先使用DockStyle.Fill添加控件。这也可以通过使用Controls.SetChildIndex方法来完成。这很有效。也许,你应该把它作为答案。谢谢你的建议,我已经把它作为答案添加进去了。