我用VB做了一个系统,用MDIFORM做主窗体,里面有A、B、C三个子窗体,我怎么操作可以使在点击MDIFORM菜单的时候只能出现一个窗体,比如,我点击菜单使A窗体出现了,这时候不能允许鼠标在其他菜单上操作,只能操作A窗体,除非把A窗体关掉才可以,应该用哪个API函数啊,请高手指点先谢谢

解决方案 »

  1.   

    这用不着api函数吧,
    [code=VB    If Not Me.ActiveForm Is Nothing Then
            mnu.Enabled = False
        Else
            mnu.Enabled = True
        End If[/code]
      

  2.   

        If Not Me.ActiveForm Is Nothing Then
            mnu.Enabled = False
        Else
            mnu.Enabled = True
        End If
      

  3.   

    也可以把该窗体置顶,使用API置顶:
    http://download.csdn.net/source/1604378
      

  4.   

    定义一个form类型的变量,初始时指向mdiform,在调入子窗口前判断该变量是否指向mdiform,如果不是且该窗口变量的名称不等于即将调入的窗口的名称,则unload,然后调入子窗口,再将窗口变量指向子窗口.
    比如:Dim m_ActiveForm As Form
    Private Sub Form_Load()   
        Set m_ActiveForm = Me
    End Sub
    Private Sub BButon_Click(Index As Integer)
        Dim OldForm As Form
        
        Set OldForm = m_ActiveForm
        Select Case Index
            Case 0 '登记委托业务
                Set m_ActiveForm = frm登记委托业务
            Case 1 '登记银行存款
                Set m_ActiveForm = frm登记银行存款
            Case 2 '登记财务费用
                Set m_ActiveForm = frm登记财务费用
            '...
        End Select
        If m_ActiveForm.Name = OldForm.Name Then Exit Sub
        If OldForm.Name <> frmDesktop.Name Then Unload OldForm
        Load m_ActiveForm
        m_ActiveForm.Move 0, 0
        m_ActiveForm.Show
    End Sub
      

  5.   

    在調用窗體時,按如下方式,可以避免不能再加載子窗體,
    Private Sub mnuA_Click()
        If Forms.Count <= 1 Then
            Form1.Show
        End If
    End SubPrivate Sub mnuB_Click()
        If Forms.Count <= 1 Then
            Form2.Show
        End If
    End SubPrivate Sub mnuC_Click()
        If Forms.Count <= 1 Then
            Form3.Show
        End If
    End Sub
    表示,只有在MDI中沒有打開窗體時,才能打開其子窗體。這種方式不能鎖定菜單,只是控制點擊菜單無效。
      

  6.   

    先判定当前是否有子窗体打开
    'MDIForm1
    Option ExplicitPrivate Sub mnuOpen1_Click()
        If Me.ActiveForm Is Nothing Then
            Form1.Show
        End If
    End SubPrivate Sub mnuOpen2_Click()
        If Me.ActiveForm Is Nothing Then
            Form2.Show
        End If
    End SubPrivate Sub mnuOpen3_Click()
        If Me.ActiveForm Is Nothing Then
            Form3.Show
        End If
    End Sub
      

  7.   

    form.show 1
    模式显示,这是正确答案!