C# 表单不会完全关闭,也不会无故打开
我的程序有两个表单和代码,当我启动另一个表单时只隐藏表单1,当我启动表单1时隐藏表单2。 但这不会发生,表单也不会隐藏它们只是重新开始。 我在每个窗体中放置了两个按钮,当您单击第一个窗体上的按钮时,第一个窗体将隐藏,第二个窗体将显示;当您单击第二个窗体中的按钮时,将隐藏并显示第一个窗体。 我能做到,而且效果很好。 但你们可以从图中看出我的问题。 你可以在我上传的图片中看到我在说什么 这是我在表格1的按钮1中的代码:C# 表单不会完全关闭,也不会无故打开,c#,C#,我的程序有两个表单和代码,当我启动另一个表单时只隐藏表单1,当我启动表单1时隐藏表单2。 但这不会发生,表单也不会隐藏它们只是重新开始。 我在每个窗体中放置了两个按钮,当您单击第一个窗体上的按钮时,第一个窗体将隐藏,第二个窗体将显示;当您单击第二个窗体中的按钮时,将隐藏并显示第一个窗体。 我能做到,而且效果很好。 但你们可以从图中看出我的问题。 你可以在我上传的图片中看到我在说什么 这是我在表格1的按钮1中的代码: private void btnMigrate_Click(objec
private void btnMigrate_Click(object sender, EventArgs e)
{
Form2 f2 =new Form2();
f2.Show(); // Shows Form2
}
这是我在表单2中按钮2中的代码:
private void btnMigrate_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1(); // Instantiate a Form3 object.
f1.Show(); // Show Form3 and
this.Close();
}
我可以解决一个表格,表格2没有结果就不能打开。
但当我用button1表单1编写代码时:
this.Close();
在我点击表单2中的按钮2后,应用程序关闭并且不会显示表单
我把密码
public Form1 f1 { get; set; }
表格二及
public Form2 f2 { get; set; }
在表格1中
但我还有这个问题。。。
错误显示“f2”在当前上下文中不存在
这是一个有方法的类:(表2) 表格1:
private void btnMigrate_Click(object sender, EventArgs e)
这正是我一直在寻找的。 非常感谢
我的问题解决了。您需要将引用从一个表单添加到另一个表单,以便可以从另一个表单更改一个表单的属性。然后,在button_click事件中,您不需要每次都创建另一个窗体的新实例,但必须检查引用f1/f2中的窗体是否在创建之前未创建或已释放(仅在这种情况下,您需要创建窗体),然后显示另一个窗体并隐藏(但不关闭)当前窗体: 表格1类别:
public partial class Form1 : Form
{
public Form2 f2 { get; set; }
public Form1()
{
InitializeComponent();
}
private void btnMigrate_Click(object sender, EventArgs e)
{
if (this.f2 == null || this.f2.IsDisposed == true)
{
this.f2 = new Form2();
this.f2.f1 = this;
}
f2.Show();
this.Hide();
}
}
表格2类别:
public partial class Form2 : Form
{
public Form1 f1 { get; set; }
public Form2()
{
InitializeComponent();
}
private void btnMigrate_Click(object sender, EventArgs e)
{
if (this.f1 == null || this.f1.IsDisposed == true)
{
this.f1 = new Form1();
this.f1.f2 = this;
}
f1.Show();
this.Hide();
}
}
如果您提供了一些codecan,那么就更容易提供帮助了。您可以向我们展示具有f1属性的Form1类,其中只有一个方法-btnMigrate_Click(),以及具有f2属性且具有相同方法的Form2类?请参阅我的答案编辑。这就是类和方法的外观。
public partial class Form2 : Form
{
public Form1 f1 { get; set; }
public Form2()
{
InitializeComponent();
}
private void btnMigrate_Click(object sender, EventArgs e)
{
if (this.f1 == null || this.f1.IsDisposed == true)
{
this.f1 = new Form1();
this.f1.f2 = this;
}
f1.Show();
this.Hide();
}
}