Visual C#:如何向用代码创建的窗体添加控件?

Visual C#:如何向用代码创建的窗体添加控件?,c#,C#,我是Visual C的新手,目前我一直在研究如何创建一个新表单(使用代码,而不是设计)并向这个新表单添加内容(即标签和文本框)。以下是我现在拥有的: namespace AccountInfo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1

我是Visual C的新手,目前我一直在研究如何创建一个新表单(使用代码,而不是设计)并向这个新表单添加内容(即标签和文本框)。以下是我现在拥有的:

namespace AccountInfo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            profileForm profile = new profileForm();  // Make new form
            profile.Name = "newProfile";
            profile.Text = "Add a new profile";
            profile.LabelText = "test";
            profile.Show();             // Display form
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }

    public class profileForm : Form
    {
        // Controls
        Label label1 = new Label();

        public profileForm()
        {

        }

        public string LabelText
        {
            set { label1.Text = value; }
        }

        private void profileForm_Load(object sender, EventArgs e)
        {

        }
    }
}
当我运行这段代码时,我会得到默认表单,然后单击按钮1。它提出了一种新的形式,但没有任何内容。我期待一个标签出现,但它不会。我尝试了多种不同的方法(这是我最近的一种方法),但我没有发现任何东西。我环顾了StackOverflow,然后又提到了另一个话题,但它的解决方案对我来说并不适用。我很感激你能深入了解这一点:)非常感谢


编辑:我也尝试过使用构造函数。它没有帮助。

您正在内存中创建标签对象,但没有将其指定给特定的父控件,也没有设置其位置等。。。谷歌“动态创建控件C#”,你会发现一吨的

您基本上需要从profileForm中的某个地方调用以下两行代码

   label1.Location = new Point(25,25);

   this.Controls.Add(label1);

您正在内存中创建标签对象,但没有将其指定给特定的父控件,也没有设置其位置等。。。谷歌“动态创建控件C#”,你会发现一吨的

您基本上需要从profileForm中的某个地方调用以下两行代码

   label1.Location = new Point(25,25);

   this.Controls.Add(label1);

很快,我就在看一段回答这个问题的视频。 它是如何在流程布局中添加动态控制的完整指南。
下面是视频:

很快,我在看一段视频,回答了这个问题。 它是如何在流程布局中添加动态控制的完整指南。
以下是视频:

根据Dylan的建议,您需要在load事件中将Label对象添加到profileForm中,如下所示:

this.Controls.Add(label1);

按照Dylan的建议,您需要在load事件中将Label对象添加到profileForm中,如下所示:

this.Controls.Add(label1);

啊,谢谢。我缺少控件。添加行。我之前一直在修补这个,弄不懂它想让我说什么。我在这里发布的代码比我之前处理的代码要少一些(因此,如果它让我看起来好像没有尝试,那就不是这样了:)。谢谢你的帮助!哈哈,谢谢!StackOverflow也是新手…还没有发现它的所有复杂之处:)啊,谢谢。我缺少控件。添加行。我之前一直在修补这个,弄不懂它想让我说什么。我在这里发布的代码比我之前处理的代码要少一些(因此,如果它让我看起来好像没有尝试,那就不是这样了:)。谢谢你的帮助!哈哈,谢谢!StackOverflow也是新手……还没有发现它的所有复杂之处:)右键单击
InitializeComponent()和转到定义(或F12)。在那里,您将看到表单设计器生成的代码和转到定义(或F12)。在这里,您将看到表单设计器生成的代码。是否有任何理由将其保留在加载事件中而不是构造函数中?似乎有几种方法可以实现这个目标,但我不确定哪种方法是最好的,或者为什么…没有理由在加载事件中使用它。您甚至可以在构造函数中添加控件。是否有任何理由将此控件保留在加载事件中而不是构造函数中?似乎有几种方法可以实现这个目标,但我不确定哪种方法是最好的,或者为什么…没有理由在加载事件中使用它。您甚至可以在构造函数中添加控件。