我做一个小程序,有一个主窗体,开始需要管理员登陆,如果不登陆菜单是灰色的,登陆后通过菜单打开别的窗体,如果注销再让菜单为灰色,如何保证在注销时除主窗体外别的窗体都关闭呢?

解决方案 »

  1.   

    如果你在程序中没有用到set frm=new frm***的话,你就可以写一段代码把所有可能没有关闭的窗体关掉就可以了。
    当然这是最笨的方法,建议不要采用。
      

  2.   

    你做的是MDI还是SDI,你的注销功能在哪儿实现?
      

  3.   

    如果是SDI,注销功能在主窗体里的话,直接注销使菜单为灰色就行了.如果是MDI,要判断子窗体是否打开,如果打开,先关闭.再使菜单为灰色
      

  4.   

    SDI注销在主窗体上菜单系统-注销登陆  实现,我的意思是保证注销后除主窗体外别的窗体都
    没有,如果有打开没关闭的,提示关闭,不关闭不能注销,谢谢
      

  5.   

    主窗体中执行登录菜单命令过程:
    Dim iLoop As Long
    On Error Resume Next
    '完成卸载其他窗体
    For iLoop = Forms.Count - 1 To 0 Step -1
        Unload Forms(iLoop)
        If Forms.Count > iLoop Then
            Exit Sub
        End If
    Next iLoop
    If (Forms.Count = 0) Then Close
    If (Forms.Count > 0) Then End    Frm_Main.Show     '显示主窗体
        Frm_Login.Show    '显示登录窗体登录窗体初始化内容:
    '如下是禁止某些菜单
    MDI_Main.M_ZYJ.Enabled = False
    MDI_Main.M_JCSJ.Enabled = False
    MDI_Main.M_CL.Enabled = False
    MDI_Main.M_EXIT.Enabled = False'退出登录窗体后必须:
    MDI_Main.M_ZYJ.Enabled = True
    MDI_Main.M_JCSJ.Enabled = True
    MDI_Main.M_CL.Enabled = True
    MDI_Main.M_EXIT.Enabled = True'与上面初始化时相对应
      

  6.   

    For iLoop = Forms.Count - 1 To 1 Step -1
            Unload Forms(iLoop)   '完成卸载其他窗体
        Next iLoop
    我是这样用的,是不是窗体按建立次序自动加一个index啊,比如第一个建的为1