我想实现下面的功能:一个子窗口打开后,主窗口对应菜单项的enabled=false,该窗口关闭则主窗口对应菜单项的enabled=true,这样可以保证不会一次打开两次同一个子窗口。
问题是,在每个子窗口写
private sub form_load()
...
frmMain.mnufile.mnufile1.enabled=false
...
private sub form_unload()
...
frmMain.mnufile.mnufile1.enabled=true
...
但是报错:only one mdi form allowed
应该怎么办?或是有别的什么好办法?

解决方案 »

  1.   

    那就不要用mdi了,sdi就可以拉
      

  2.   

    to:gpo2002(gpo2002)
    我已经做成了mdi窗口了。
    在mdi窗口怎样得到某个窗口打开或关闭状态的信息?
    Help!help!!
      

  3.   

    你出错的地方应该不跟菜单有关系.代码是没错的,也能够实现你的目的.如果你实在没有办法查处你的错误所在,可以通过另一个方法来实现你的目的.点击菜单后先检查内存中是否有该窗体,如果有才就退出,没有再加载.Public Function isLoad(strForm As String) As Boolean
      For i = 0 To Forms.Count - 1
        If LCase(Forms(i).Name) = LCase(strForm) Then
           isLoad = True
           Exit For
        Else
           isLoad = False
        End If
      Next
    End Function在你的菜单的click过程中写入:
    If IsLoad("XXX") then
       exit sub
    else
       frmXXX.show
    end if
      

  4.   

    直接调用菜单的key值,a1是一菜单的名称
    Private Sub Form_Load()
        MDIForm1.a1.Enabled = False
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        MDIForm1.a1.Enabled = True
    End Sub
    我这里运行过,成功的.
      

  5.   

    to:stonegoldaustin(特纯中南海) 
     你的办法很好,不过这样做,对应菜单项就不会是打开一个后变成disabled,关闭后变成enabled.
    是否mdi窗口有特殊的属性设置。