今天做机房收费系统时,调试了半天窗体也不能显示,只是代码运行一遍就自动关闭了,一点一点的调试运行才找到问题的原因,因为,窗体的模式与非模式显示没有设置好。
Sub main() Dim frmLoginchild As New frmLogin frmLoginchild.Show vbModal '登陆窗体以模式方式登陆,这个窗体不卸载或隐藏,则下面的代码不运行 '判断登陆窗体是“确定”还是“取消” If Not frmLoginchild.Ok Then End End If Unload frmLoginchild frmMainForm.Show '显示主窗体界面 End Sub开始,我忘了把登陆窗体设置成模态方法,窗体总是执行一遍就迅速卸载,模式设置对于应用程序有时是非常有用的,对于登陆窗体如果,不设置模态,想使它实现判断是否执行的功能,可以用API函数实现,具体也不太清楚,实现起来应该会比这种方式麻烦些。
把登陆窗体模式化后,发现主窗体还是显示不出来,想了一下,可能是设置成模式窗体的原因
Show 方法
用以显示 MDIForm 或 Form 对象。不支持命名参数。
语法
object.Show style, ownerform
Show 方法的语法包含下列部分:
部分 | 描述 |
object | 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则与活动窗体模块关联的窗体缺省为 object。 |
Style | 可选的。一个整数,它用以决定窗体是模式还是无模式 。如果 style 为 0,则窗体是无模式的;如果 style 为 1,则窗体是模式的。 |
ownerform | 可选的。字符串表达式,指出部件所属的窗体被显示。对于标准的Visual Basic 窗体,使用关键字 Me。 |
说明
如果调用 Show 方法时指定的窗体没有装载,Visual Basic 将自动装载该窗体。
当 Show 在显示无模式窗体时,随后遇到的代码则要执行。当 Show 在显示模式窗体 (modal form) 时,则随后的代码直到该窗体被隐藏或卸载时才能执行。
当 Show 在显示模式窗体时,除了模式窗体中的对象之外不能进行输入(键盘或鼠标单击)。对其它窗体进行输入前程序必须隐藏或卸载模式窗体(通常是处于响应用户某些操作状态)。MDIForm 不能是形式的。
在模式窗体显示时,虽然应用程序中的其它窗体失效,但其它应用程序不会失效。
应用程序的启动窗体在其 Load 事件调用后会自动出现。
下面的例子说明如何使用ownerform 参数:
Private Sub cmdShowResults_Click() '
显示模式窗体frmResults.
frmResults.Show vbModal, Me
End Sub
然后,我把登陆窗体成功验证后面,加上了隐藏窗体,于是,程序就可以正常显示出来了,有时一点点代码在程序中却起着,很重要的作用,还需要我们认真思考代码如何运行?运行的原因?我们才能找到问题的答案。