我很可能发现了VB的一个BUG,不知是不是,大家有没有办法解决呀,谢谢。
问题:由mouse右键菜单调出打开(Form2.Show 1)的窗口中不能再调出自己的mouse右键菜单(Me.PopupMenu Me.mform2
)???FORM1是启动窗口,在FORM1中设置有菜单
一级菜单mform1
二级菜单...mform1_son
并有如下代码
Private Sub mform1_son_Click()
    Form2.Show 1
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Me.PopupMenu Me.mform1
End Sub
在FORM2同样有类似的菜单
一级菜单mform2
二级菜单...mform2_son
并有如下代码
Private Sub mform2_son_Click()
    msgbox"如果能看到本信息说明这个BUG不存在。"
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Me.PopupMenu Me.mform2
End Sub

解决方案 »

  1.   

    这是正常的啊,你的窗体是模态打开,所以,上一菜单的事件处理没有返回,
    因此,不能再显示任何菜单(不止是弹出菜单)。按照微软的说法,任何时候都只能显示一个菜单,这就是WINDOWS的特性,不是VB的BUG。把你的弹出窗体改为非模态显示就可以了。当然,用非模态窗体,可能你还得对程序相应的进行一些修改。
      

  2.   

    可是我需要的就是用模态窗口,这样看来,这是WINDOWS的特性,不是VB的BUG。谢谢您的回答。不知有没有其他的办法可达到这个目的。
      

  3.   

    如果用多线程,也许有解。(我是.Net的,别问我VB怎么做多线程。)
    如果在一个线程中,模态窗口开了后,消息循环就不能在父窗口执行了。所以需要做一个新线程来开这个窗口。
      

  4.   

    flyingscv(zlj) 你怎么可以呢,你是神呀。我的QQ是 184334926 ,向你请教呀。
      

  5.   

    现在有两个窗体Form1、Form2,在Form1里面显示Form2,在Form2里面你可以写一个类似有模式窗口的显示函数。Form2里面:Private frmMyParent As FormPublic Sub ShowMe(frmParent As Form)
        frmParent.Enabled=False
        Set frmMyParent =frmParent 
        Me.Show
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        frmMyParent.Enabled=True
    End Sub在Form1里面直接调用Form2的ShowMe(Me)就可以实现了