在表单关闭时加载表单

时间:2013-06-11 20:04:33

标签: c# forms

我有两个表单,Form1和Form2。我想在调试程序时加载Form2,然后在btnclickevent(在Form2中)关闭Form2并加载Form1并将文本框中的输入值导入Form1中的代码。

如果有些事情需要谨慎,请告诉我。

 private void Form1_Load(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Show();
     } 

2 个答案:

答案 0 :(得分:6)

首先显示的格式由Program.cs中的Main()方法确定。例如,你可以看起来像这样:

    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form main;
        if (System.Diagnostics.Debugger.IsAttached) main = new Form2();
        else main = new Form1();
        Application.Run(main);
    }

在Form2之后仍然很难显示Form1,你可以这样解决:

        if (System.Diagnostics.Debugger.IsAttached) {
            using (var debug = new Form2()) {
                if (debug.ShowDialog() != DialogResult.OK) return;
            }
        }
        Application.Run(new Form1());

答案 1 :(得分:-1)

  

我希望在调试程序时加载Form2

进入Program.cs并更改此内容:

static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

用这个:

 static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form2());
    }
  

然后在btnclickevent(在Form2中)关闭Form2并加载Form1

将其放在 form2 中。如果您不理解语法,可以阅读Lambda expressionsAnonymous methods

someButton.Click += (s, e) => 
{
Form1 form1 = new Form1();
form1.Show();
this.Close();
};
  

加上将文本框中的输入值导入Form1中的代码

哦..因为我们不喜欢使用静态内容,我们将更改 form1 的构造函数,以确保它代表它的目的。 (因为 form1 需要在创建文本框时需要一些文本,它应该在它的类的构造函数中接收它。)

所以将字段/属性放到 form1 并在其构造函数中设置它。 (确保它收到一个字符串)

public Form1 (string someText)
{
  //set it
}

现在你所要做的就是改变另一种形式的呼叫。

someButton.Click += (s, e) => 
{
Form1 form1 = new Form1(myTextBox.Text);
form1.Show();
this.Close();
};