我很可能发现了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
问题:由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
因此,不能再显示任何菜单(不止是弹出菜单)。按照微软的说法,任何时候都只能显示一个菜单,这就是WINDOWS的特性,不是VB的BUG。把你的弹出窗体改为非模态显示就可以了。当然,用非模态窗体,可能你还得对程序相应的进行一些修改。
如果在一个线程中,模态窗口开了后,消息循环就不能在父窗口执行了。所以需要做一个新线程来开这个窗口。
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)就可以实现了