Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
     ' Make VB discard the mouse capture. 
     Text1.Enabled = False 
     Text1.Enabled = True 
     
      End Sub 

解决方案 »

  1.   

    api方法Option ExplicitPublic OldWindowProc As Long
    ' 保存默认的窗口函数的地址
    Public Const WM_CONTEXTMENU = &H7B
    ' 当右击文本框时,产生这条消息Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Function SubClass1_WndMessage(ByVal hWnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As Long
    If Msg <> WM_CONTEXTMENU Then
    SubClass1_WndMessage = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp)
    ' 如果消息不是WM_CONTEXTMENU,就调用默认的窗口函数处理
    Exit Function
    End If
    SubClass1_WndMessage = True
    End Function窗体的代码:Option ExplicitPrivate Const GWL_WNDPROC = (-4)Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then Exit Sub
    OldWindowProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC)
    ' 取得窗口函数的地址
    Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf SubClass1_WndMessage)
    ' 用SubClass1_WndMessage代替窗口函数处理消息
    End SubPrivate Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then Exit Sub
    Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, OldWindowProc)
    ' 恢复窗口的默认函数
    PopupMenu usermenu
    ' 弹出自定义菜单
    End Sub
      

  2.   

    Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
         ' Make VB discard the mouse capture. 
         Text1.Enabled = False 
    popupmenu yourmenu
         Text1.Enabled = True 
         
          End Sub 
    这样才行
      

  3.   

    Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
         ' Make VB discard the mouse capture. 
         Text1.Enabled = False 
         Text1.Enabled = True 
         PopupMenu usermenu      End Sub
      

  4.   

    我如果不要弹出任何menu呢!?