从包含所有组件的另一个表单打开一个新表单

时间:2013-12-21 12:54:41

标签: c# winforms forms

我试图在主窗体上单击时打开一个新表单。 问题是新的形式出现了,但没有任何组件,只有embty形式 这就是我写的。

private void button2_Click(object sender, EventArgs e)
    {
        Form rr = new Form();
        this.Hide();
        rr.ShowDialog();

    }

3 个答案:

答案 0 :(得分:1)

那是因为你打开了基本的表单而不是你的表单(带有控件)。

假设您的表单类(您设计的)是MyForm,那么您应该将其设置为

  private void button2_Click(object sender, EventArgs e) {
    MyForm rr = new MyForm(); // <- MyForm not Form!
    rr.ShowDialog();
  }

答案 1 :(得分:0)

问题:这是因为您只是在不添加Form的情况下创建和显示新的controls

方法1:您可以向运行时创建的表单添加控件。

试一试:在Label上添加Form - 同样可以添加其他控件。

        Form rr = new Form();
        Label l1=new Label();
        l1.Text = "label 1";
        rr.Controls.Add(l1);
        this.Hide();
        rr.ShowDialog();

方法2:您可以从NewForm创建IDE,然后添加controls中的DesignView

Visual Studio IDE添加表单:

1。右键点击project
2。选择Add - &gt; Windows Form...
3。现在输入表单名称 - &gt; SampleForm
4. 现在在新创建的controls上添加SampleForm 5. 显示新创建的表单

SampleForm sample=new SampleForm();
sample.ShowDialog();

答案 2 :(得分:0)

我有一个小帮手功能女巫就是这样:

  private void ShowForm<T>() where T: Form, new ()
    {
        this.Hide();
        T form = new T();
        form.FormClosed += (s, e) => this.Show();
        form.Show();
    }

这是一个像故事板一样工作的主要形式,例如当有人点击一个按钮并且我要显示一个新表格时我会这样做:

    private void SomeButton_Click(object sender, EventArgs e)
    {
        ShowForm<PublishersForm>();
    }
相关问题