登陆窗体的模式与非模式显示

             今天做机房收费系统时,调试了半天窗体也不能显示,只是代码运行一遍就自动关闭了,一点一点的调试运行才找到问题的原因,因为,窗体的模式与非模式显示没有设置好。

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
     然后,我把登陆窗体成功验证后面,加上了隐藏窗体,于是,程序就可以正常显示出来了,有时一点点代码在程序中却起着,很重要的作用,还需要我们认真思考代码如何运行?运行的原因?我们才能找到问题的答案。



原文地址:https://www.cnblogs.com/lilongsheng/p/3226156.html