想利用列表框来模拟一个弹出式菜单,可是如何定位列表框到鼠标的位置,如何让列表框失去焦点时隐藏呀?
---------------
1.实现当鼠标在表格上某处右击时,将列表框可见,并定位到鼠标指向的位置上,
关键是列表框的位置如何确定.
2.当用户没有点下列表框中的任意一项时,或用户在列表框外任意处单击一下时,让这个列表框隐藏起来,如何实现呀.我用lostfocus事件不起作用.

解决方案 »

  1.   

    菜单直接就可以弹出,不用列表模拟
    打开界面,点击 menu editor,为这个界面添加菜单(一级菜单在这里是不显示的,在这个一级菜单下增加的子菜单将在菜单中显示)
    下例:在form上单击鼠标右键完成时弹出菜单:
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If Button = 2 Then
          Me.PopupMenu mnuNew
       End If
    End Sub
    菜单会自动跟随鼠标点击出现,并在菜单被选择或者鼠标点其他地方时自动消失
      

  2.   

    谢谢,因为我是在mdi子窗体中操作,你的办法可以,但是这个菜单会出现的.如果是sdi窗体,这样做是完全可以的.有变通的办法吗?
      

  3.   

    什么窗体都无所谓,设计菜单时,将visible属性设为false
      

  4.   

    chd2001(天蝎降临)  回答的正确menu editor,为这个界面添加菜单(一级菜单在这里是不显示的,在这个一级菜单下增加的子菜单将在菜单中显示)
    二级菜单是自己想要的菜单。Private Sub Command3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If Button = 2 Then
          PopupMenu mnuAddNew
       End If
    End Sub  
      

  5.   

    什么窗体都无所谓,设计菜单时,将visible属性设为false
    -------------
    谢谢,可是我试了,如果是mdi子窗体,虽然菜单隐藏了,但是打开窗本后,还是有的.而且把mdi父窗体给覆盖了.
      

  6.   

    什么窗体都无所谓,设计菜单时,将visible属性设为false
    ---------------------
    上一贴我回答的不准确,我又仔细看了下,原来主要原因是会影响到mdi父窗体中的菜单也不可见.
    子菜单是不可见.可是mdi父窗体的菜单也没了.因为它会影响到mdi父窗体的菜单,所以这个问题解决不了.我想打开子窗体时,父窗体中的菜单不受影响.
      

  7.   

    那么用FORM的话,这个sub中的参数:X Y 就是鼠标的当前坐标值,让窗体跟着走就行了
    Private Sub MDIForm_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
       If Button = 2 Then
          Form1.Move Me.Left + x, Me.Top + y, Form1.Width, Form1.Height
          Form1.Show
       End If
    End SubLostFocus事件是可用的 我试了 没问题
      

  8.   

    Private Sub Form_LostFocus()
     Me.Hide
    End Sub
      

  9.   

    那么用FORM的话,这个sub中的参数:X Y 就是鼠标的当前坐标值,让窗体跟着走就行了
    Private Sub MDIForm_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
       If Button = 2 Then
          Form1.Move Me.Left + x, Me.Top + y, Form1.Width, Form1.Height
          Form1.Show
       End If
    End SubLostFocus事件是可用的 我试了 没问题
    ------------------------
    你的意思是用一个专门的窗体来放菜单,是这样吗?
    可是这样的话,菜单项中的操作代码要写在有菜单的窗体上.可是代码中却要操作没有菜单的窗体,这涉及到两个窗体之间的操作,是这样吗?