我用VB默认的那个密码框,但是点取消后还是能打开主程序啊,是怎么回事呢?

解决方案 »

  1.   

    我刚学VB,是在主窗体MDIFORM下的load事件下先调用密码框;
    frmlogin.show vbmodal
    然后密码框里的代码是:Option ExplicitPublic LoginSucceeded As BooleanPrivate Sub cmdCancel_Click()
        '设置全局变量为 false
        '不提示失败的登录
        LoginSucceeded = False
        Me.Hide
    End SubPrivate Sub cmdOK_Click()
        '检查正确的密码
        If txtPassword = "password" Then
            '将代码放在这里传递
            '成功到 calling 函数
            '设置全局变量时最容易的
            LoginSucceeded = True
            Me.Hide
        Else
            MsgBox "无效的密码,请重试!", , "登录"
            txtPassword.SetFocus
            SendKeys "{Home}+{End}"
        End If
    End Sub但是一点取消按钮,密码框是关闭了,但并不能退出程序,而是把主窗体打开了.
      

  2.   

    Private Sub cmdCancel_Click()
        '设置全局变量为 false
        '不提示失败的登录
        LoginSucceeded = False
        End
    End Sub
      

  3.   

    先调用frmlogin窗体,然后在frmlogin窗体事件内调用主窗体
      

  4.   

    怎么样先调用frmlogin窗体啊?
      

  5.   

    可以这样改:
        增加一个模块:
        在模块中写:
        Sub main()
           frmlogin.show 
        end sub
        然后密码框里的代码改成:Option ExplicitPublic LoginSucceeded As BooleanPrivate Sub cmdCancel_Click()
        '设置全局变量为 false
        '不提示失败的登录
        LoginSucceeded = False
        End
    End SubPrivate Sub cmdOK_Click()
        '检查正确的密码
        If txtPassword = "password" Then
            '将代码放在这里传递
            '成功到 calling 函数
            '设置全局变量时最容易的
            LoginSucceeded = True
            Me.Hide
            MDIFORM.show 
        Else
            MsgBox "无效的密码,请重试!", , "登录"
            txtPassword.SetFocus
            SendKeys "{Home}+{End}"
        End If
    End Sub
      

  6.   

    一般的做法是楼上那种,先验证身份,然后才显示窗体,当然记得在工程--属性--启动对象中选取submain
    你上面出现的问题是:你在mdiform 的load事件中
    frmlogin.show vbmodal
    你点取消后会继续运行下面的代码。所以程序还会跑完余下的代码
    如果你非要这么做的话,可以这样
    pirvate sub mdiform_load()
    frmlogin.show 1
    if frmlogin.LoginSucceeded =false then
    end 
    end if
    end sub
      

  7.   

    小弟一个低级方法。
    在form_load中判断登录的返回值。不符合就End