C#弹出窗体:两个窗体,Form1和Form2,想要点Form1的按钮后,出现Form2,Form1消失,点Form2的按钮同样效果
我试过在Form1的窗体按钮里写this.Close();Form2a=newForm2();a.Show();但是Form2出现后和Form1一起消失了我又把语句改成F...
我试过在Form1的窗体按钮里写
this.Close();
Form2 a = new Form2();
a.Show();
但是Form2出现后和Form1一起消失了
我又把语句改成
Form1 b = new Form1();
b.Close();
Form2 a = new Form2();
a.Show();
结果是Form1不消失;
我单独运行
Form1 b = new Form1();
b.Close();
发现Form1根本不消失,我有用FormClosed事件,发现根本没有效果,到底要怎么写啊,求牛人帮助 展开
this.Close();
Form2 a = new Form2();
a.Show();
但是Form2出现后和Form1一起消失了
我又把语句改成
Form1 b = new Form1();
b.Close();
Form2 a = new Form2();
a.Show();
结果是Form1不消失;
我单独运行
Form1 b = new Form1();
b.Close();
发现Form1根本不消失,我有用FormClosed事件,发现根本没有效果,到底要怎么写啊,求牛人帮助 展开
2个回答
展开全部
这个功能你最好知道两个知识点:
第一,窗体消失有很多方式,介绍两种最常见的:Close(),Hide().二者的区别在于,Close会释放掉窗体的资源,而Hide()不会
第二,要保持窗体的唯一性,可以用单例模式.
class Form1:Form
{
static Form1 formbase;
//将类的初始化函数设为私有,这样在外部就不能直接初始化
piravte Form1()
{}
//单例模式,保证该实例只初始化一次.
public static Form1 GetInstation()
{
if(formbase==null||formbase.IsDispose()) //当formbase为空,或者被释放掉时执行初始化
{
formbase=new Form1();
}
return formbase;
}
}
class Form2:Form
{
public void ShowForm1HideForm2()
{
Form1 form1=Form1.GetInstation(); //调用唯一实例
form1.Caption="第一次初始化";
form1.Show();
form1.Hide(); //隐藏掉.
form1=Form1.GetInstation(); //调用唯一实例
Console.Writeline(form1.Caption); //这里可以看到 Caption="第一次初始化"
form1.Show();
}
}
第一,窗体消失有很多方式,介绍两种最常见的:Close(),Hide().二者的区别在于,Close会释放掉窗体的资源,而Hide()不会
第二,要保持窗体的唯一性,可以用单例模式.
class Form1:Form
{
static Form1 formbase;
//将类的初始化函数设为私有,这样在外部就不能直接初始化
piravte Form1()
{}
//单例模式,保证该实例只初始化一次.
public static Form1 GetInstation()
{
if(formbase==null||formbase.IsDispose()) //当formbase为空,或者被释放掉时执行初始化
{
formbase=new Form1();
}
return formbase;
}
}
class Form2:Form
{
public void ShowForm1HideForm2()
{
Form1 form1=Form1.GetInstation(); //调用唯一实例
form1.Caption="第一次初始化";
form1.Show();
form1.Hide(); //隐藏掉.
form1=Form1.GetInstation(); //调用唯一实例
Console.Writeline(form1.Caption); //这里可以看到 Caption="第一次初始化"
form1.Show();
}
}
追问
不好意思啊,这已经是最简单的方法了吗?我初学的啊,有点看不懂啊,没有更简单的方法了吗?
追答
你当前的问题就是Hide()和Close()的区别而已
但可能有更进一步的问题:
在你隐藏掉Form1之前 可能你在Form1的TextBox写了某些东西,
当再次想显示的时候,还想回到以前的状态,就不能去实例化.否则写的东西就不见了.
当然更不能把Form1的实例当做参数到处传.
解决这个问题只有单例模式.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询