Private Sub Command1_Click()
Dim ctlMenu As Control
For Each ctlMenu In Me.Controls
    If TypeOf ctlMenu Is Menu Then
        ctlMenu.Enabled = False
    End If
Next
End SubPrivate Sub Command2_Click()
Dim ctlMenu As Control
For Each ctlMenu In Me.Controls
    If TypeOf ctlMenu Is Menu Then
        ctlMenu.Enabled = True
    End If
Next
End Sub

解决方案 »

  1.   

    '判断菜单是否可激活
     Sub MenuShow()
        If User_name = "" Then
           fMainForm.mnuModify.Enabled = False
           fMainForm.mnuTest16PF.Enabled = False
           fMainForm.mnuTestGatb.Enabled = False
           fMainForm.mnuTestPreference.Enabled = False
        Else
           fMainForm.mnuModify.Enabled = True
           fMainForm.mnuTest16PF.Enabled = True
           fMainForm.mnuTestGatb.Enabled = True
           fMainForm.mnuTestPreference.Enabled = True
        End If
    End Sub
    Private Sub Command1_Click()
      user_name=""
     call MenuShow '这时候是灰的
    end sub
    Private Sub Command2_Click()
      user_name="menu"
     call MenuShow '这时候是恢复的
    end sub
    这里的user_name是个变量做为判断是否应该灰掉或者恢复,fMainForm是你菜单的主form,其他的我想就不用我再说了吧,
      

  2.   

    fMainForm.mnuModify、fMainForm.mnuTest16PF、fMainForm.mnuTestGatb、  fMainForm.mnuTestPreference都是些什么东西呀?自己定义的菜单按钮吗?
      

  3.   

    同意最顶层的!!!!!
    top !
    对了,那个人在江湖的仁兄,这些东东可都是自定义的哟。
      

  4.   

    to   funing (人在江湖)  我的代码能满足你的要求吧
      

  5.   

    to sbm(▁▂▃▄▅▇█) 何谓最简洁、最经典?下面的是否好一点?
    Private Sub SetMenuState(ByRef frmParent As Form, _
                             Optional ByVal blnState As Boolean = True)    Dim o_ctlMenu As Control
        
        For Each o_ctlMenu In frmParent.Controls
            If TypeOf o_ctlMenu Is Menu Then
                o_ctlMenu.Enabled = blnState
            End If
        NextEnd Sub