我有两个表单,Form1和Form2。我想在调试程序时加载Form2,然后在btnclickevent(在Form2中)关闭Form2并加载Form1并将文本框中的输入值导入Form1中的代码。
如果有些事情需要谨慎,请告诉我。
private void Form1_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
答案 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 expressions和Anonymous 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();
};