1)普通窗体不能成为登陆界面的缘由
首先要简单说下窗体程序的运行过程,窗体程序与控制台程序一样都是从一个静态的Main()方法中开始,此方法在项目下面的一个Program类中,双击打开此方法
Main()方法
在main()方法中又调用了application类的3个静态类的方法
1.1 EnableVisualStyles():其功能是提供可视化效果
1.2
SetCompatibleTextRenderingDefault():其功能是在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI , 还是旧的GDI)
1.3 Run():方法中的窗体是程序运行的主窗口(程序一运行就显示的窗体,在里面放那个窗体名称程序运行就显示那个窗体),一旦关闭此窗口整个程序就结束;主窗口一般都是长期显示,而登陆窗口基本都是完成登陆验证后就会关闭,所以不能将登陆窗体放在Run()方法中作为登陆窗口
如果将FLogin窗体放在Run()方法前面声明并将其显示出来,将出现下面的情况
主窗口直接显示出来;一旦主窗口(Form1)关闭,将结束整个程序
将FLogin窗体放在Run()方法前面声明并显示,登陆窗口就起不到登陆验证的作用,所以最好是程序一运行先出现登陆窗口,当单击登陆窗口的确定按钮,如果登陆验证成功则显示出主窗口,单击取消按钮整个程序也随之结束,为达到上述功能可以使用模态窗口的方法解决
2)模态与非模态窗口
非模态窗口:当前打开的所有窗口都可以选中操作;在程序中使用Show()方法打开的窗口
模态窗口:因为它会阻塞主窗口,所以在程序中只能对最后打开的活动子窗口进行操作,如果这个子窗口不关闭就不能对其他的父窗口进行操作;在程序中使用ShowDialog()方法打开的窗口
模态窗口
将登陆窗口对象的Show()方法改为ShowDialog()方法,主窗体现在是不能显示,但是如果关闭登陆窗口,主窗口就会立马显现,登陆窗口验证功能还是起不了作用;解决方法是可以使用ShowDialog()方法的返回值,将两个窗口联系起来,让登陆窗口起到真正的作用
3)使用ShowDialog()方法的返回值真正实现登陆窗口验证功能
将鼠标放在ShowDialog()方法上就会显示此方法有返回值其类型为DialogResult,在DialogResult上右击选择'转到定义',发现其是一个枚举类型
DialogResult枚举类型的值
登陆窗口有确定与取消两个按钮,在这两个按钮的单击事件中分别设置其返回值为OK与Cancel两个枚举值使用
3.1在确定按钮单击事件中设置其返回值为DialogResult.OK
3.2在取消按钮单击事件中设置其返回值为DialogResult.Cancel
返回的枚举值
this.DialogResult的this代表当前的活动窗口(FLogin),当单击按钮触发事件后就会返回其枚举值
在Main()方法中将Run()放在一个if判断语句中,通过接收两个按钮的返回值判断,如果返回值为OK,就显示主窗口,反之整个程序结束
通过判断语句显示主窗口
通过以上设置,登陆窗口的验证功能就可以真正起作用了
4)完善登陆窗口(FLogin)
4.1设置窗体的StartPosition属性值为:CenterParent(窗口显示在屏幕中间)
4.2设置窗体的FormBorderStyle属性值为:FixedDialog(窗体显示为模式窗口)
4.3设置窗体的MinimizeBox=False与MaximizeBox=False(窗口不能最大/小化)
设置登陆窗口属性
通过以上所有设置后一个基本规范化的令人比较满意的登陆窗口制作完成,有精力的自己也可以设置精美的Logo背景等
联系客服