我有两个表格,Form1 和 Form2。我希望在调试程序时加载 Form2,然后在 btnclickevent(在 Form2 中)关闭 Form2 并加载 Form1 并将输入值从文本框中导入到 Form1 中的代码中。
请让我知道是否需要澄清一些事情。
private void Form1_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
首先显示什么形式是由 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());
我希望在调试程序时加载 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();
};