我们写大作业的时候最常用的就是进行窗口跳转,毕竟一个窗口可能会容不下所以的内容,所以窗口挑战就可以有很大的用处,可以把一个项目拆分成很多个小按钮集合在一个窗口界面,然后再通过按钮窗口挑战去别的窗口在进行写代码,会更好的进行分类写代码,不会让代码变得很乱,而让自己分不清这些的什么,那写的什么,傻傻分不清楚,导致停工后再开工时要分清楚代码而花更多时间进行打理。所以我在这里分享一下窗口跳转的方法
首先创建一个窗体,然后在窗体中设置一个button按钮,如图2的查询输液记录卡按钮,双击进入查看代码界面打入以下代码
private void button3_Click(object sender, EventArgs e)
{
FrmInfusionCard frmInfusionCard = new FrmInfusionCard();
frmInfusionCard.ShowDialog();
}
创建一个类,如图所示,鼠标右键,添加,选择窗体,用来新建一个窗口进行跳转用
创建好的窗口如下图所示
最后点击运行点击查询输液记录卡按钮就会跳转到查询输液记录窗口
如果想调回图2的界面的话可再创建一个button按钮,代码一样,只需把窗口的名字修改成原来窗口的名字,注意开头的大小写,不要写错,跳转到其他窗口也是一样的原理,以此类推
如果说觉得窗口转换后原来的窗口还留在原处不是很美观的话可以改为以下代码样式
public partial class FrmDA : Form
{
private void button3_Click(object sender, EventArgs e)
{
FrmInfusionCard frmInfusionCard = new FrmInfusionCard();
this.Hide();
frmInfusionCard.ShowDialog();
Application.ExitThread();
}
}
这样的话图2界面就会消失,只留下图4界面,可以显得更加干净美观
主要函数介绍
Application.ExitThread();退出当前线程。
this.hide();把当前窗体隐藏起来了,
frmInfusionCard.showdialog();模态弹出新窗口。
模拟弹出窗口后线程不会继续执行(被阻塞了),
直到我们关闭了新弹出来的模态窗口后,程序才会继续执行Application.ExitThread();此时线程关闭,所有一切都关闭了,隐藏的窗口也关闭了。
再介绍一下windows.Show()和windows.Showdialog()的区别
Show()是弹出新窗口,还可以对原来窗口进行操作
Showdialog()是弹出窗口,后不能对原有的窗口进行操作(用上面的话就是阻塞进程)
总结下来就是: 在旧窗口中的合适位置写这些代码
//新建一个NewForm窗口(NewForm是自己定义的Form)
NewForm fm=new NewForm()
this.Hide(); //隐藏现在这个窗口
fm.Show(); //新窗口显现
如果想关闭窗口的同时退出程序话可以在代码中间加入一下3条代码:
1、this.Close(); 关闭当前窗口,无法退出程序,如果有托管线程(非主线程),也无法完全退出。(会残留程序在后台,需要自己去任务管理器会在vs内终止调试)
2、Application.Exit(); 强制中止所有消息,退出所有的窗体,如果有托管线程(非主线程),也无法彻底退出。(桌面上的窗口会被全部关闭,但也会残留在后台,不知道普通的电脑病毒是不是用这种方法写的)
3、Application.ExitThread(); 强制中止调用线程中的所有消息,同样面临其它线程无法正确退出的问题。(可退出程序,因为直接被强制终止看所以线程包括后台)
4、System.Environment.Exit(0); 最彻底的退出方法。(这个方法可以关闭窗口的同时终止所以程序,可以彻底的退出)
这种方法旧的窗口会占内存,如果用来做登陆窗口不太好,但是如果旧窗口是以后还需要恢复的主窗口,这个方法便很不错,因为以后可以关掉新窗口,再用 旧窗口.Show() 就可以恢复旧窗口了。所以这个方法适合在主窗口和子窗口间传递信息。反正就根据自己喜好进行不同的方法。