0

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

请让我知道是否需要澄清一些事情。

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

2 回答 2

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());
于 2013-06-11T20:17:13.597 回答
-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 表达式匿名方法的信息。

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();
};
于 2013-06-11T20:13:41.690 回答