Forms C#-WinForm-关闭子窗体时如何关闭父窗体?
这是我的问题: 我有3张表格:Forms C#-WinForm-关闭子窗体时如何关闭父窗体?,forms,parent,Forms,Parent,这是我的问题: 我有3张表格: 表格F家长 小学 表单OpenForm 我希望当我单击Form fChild上的按钮时,它会显示Form OpenFormand并隐藏Form FParen和Form fChild 我该怎么做? 请帮帮我 创建父窗体的新对象并关闭/隐藏它。如果要隐藏父窗体,请调用Hide()方法;如果要关闭父窗体,请调用Close()方法。最好的方法是创建一个单例类,因为如果继续这样做 Form1 f1 = new Form1(); f1.Show(); this.Hide(
- 表格F家长
- 小学
- 表单OpenForm
请帮帮我 创建父窗体的新对象并关闭/隐藏它。如果要隐藏父窗体,请调用
Hide()
方法;如果要关闭父窗体,请调用Close()
方法。最好的方法是创建一个单例类,因为如果继续这样做
Form1 f1 = new Form1();
f1.Show();
this.Hide();
您继续实例化一个新表单,而不是返回到以前的表单
以下是您如何使用singleton设计模式:
public static class SingletonForm
{
private static Form1 _f1;
private static Form2 _f2;
public static Form1 _Form1
{
get
{
if(_f1 == null)
{
_f1 = new Form1();
}
return _f1;
}
}
public static Form2 _Form2
{
get
{
if(_f2 == null)
{
_f2 = new Form2();
}
return _f2;
}
}
}
在您的按钮点击表单中,只需调用:
SingletonForm._Form1.Hide();
SingletonForm._Form2.ShowDialog();
//这是fChild OpenForm frm=new OpenForm()上的代码;this.Hide();frm.Show();我不知道如何关闭fParent。谢谢,非常感谢谢谢JC,但你可以说得很清楚。请谢谢,最好的评价这个类实际上是一个用来实例化一个类的设计模式,它在表单导航中非常有用。在这种情况下,当您在表单中调用该类时,它将首先检查表单是否已打开,如果已打开,它将不再创建新的表单实例,而是打开隐藏的表单,该表单仍在后台运行这里有一个关于singleton设计模式的首选项链接,在C#.Net中使用了多种设计模式,我没有给你提供确切的解决方案供你学习,这个网站不是用来询问代码的,但我给了你正确的逻辑。从中学习。
Assembly frmAssembly = Assembly.LoadFile(Application.ExecutablePath);
foreach (Type type in frmAssembly.GetTypes())
{
if (type.BaseType == typeof(Form))
{
if (type.Name == formname))
{
Form frmshow = (Form)frmAssembly.CreateInstance(type.ToString());
foreach (Form form in this.MdiChildren)
{
form.Close(); // form close or hide
}
frmshow.Show();
}
}
}