使用C#打开新窗口关闭旧窗口的方法
最近在练习制作一套会员积分管理系统,顺便研究了一下打开新窗口后关闭旧窗口的方法,在网上查阅了很多资料,又结合自己的试验总结如下,如果有什么纰漏,还请大家多多指正。
1、网上流传最广的应该是隐藏法了,原理就是把旧窗口隐藏掉,再打开新窗口。
具体的代码如下:
//在旧窗口中的合适位置写这些代码
//新建一个NewForm窗口(NewForm是自己定义的Form)
NewForm fm=new NewForm()
this.Hide(); //隐藏现在这个窗口
fm.Show(); //新窗口显现
这种方法旧的窗口依旧会占内存,因此如果用来做登陆窗口不太好,但是如果旧窗口是以后还需要恢复的主窗口,这个方法便很不错,因为以后可以关掉新窗口,再用 旧窗口.Show() 就可以恢复旧窗口了。
所以这个方法适合在主窗口和子窗口间传递信息。
2、再来便是为登录窗口设计的方法了。
在Program.cs里这样定义:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//新建Login窗口(Login是自己定义的Form)
Login Log = new Login();
//使用模式对话框方法显示Log
Log.ShowDialog();
//DialogResult就是用来判断是否返回父窗体的
if (Log.DialogResult == DialogResult.OK)
{
//在线程中打开主窗体
Application.Run(new Main());
}
}
在登陆窗口中验证结束后要赋值Log.DialogResult = DialogResult.OK 。
这样登录窗口完成任务后会被直接关掉,主窗口就打开了。
现在我还不是很懂为什么会这么麻烦,但大致的原因应该是“必须有一个主窗体始终存在,在其上新建的所有窗体都是有它所有的,关闭它其它的自然就关闭了”。我也正在学习呢~
你可能会想,能不能让主窗口直接出现,然后在构造函数中隐藏掉它,并在其上新建一个新登陆窗口,在登陆完成后登录窗口消失,主窗口再显示出来,大概可行吧,但我试了几次没有成功……
呵呵,这便是初学者的郁闷和困惑吧……