这个textbox只能输入整数。
当用户用用鼠标右键点击这个textbox,然后选择粘贴,这个时候怎么样判断用户用粘贴的内容是不是整数,不是的话的话,取消粘贴事件。

解决方案 »

  1.   

    另外:不用api,能不能直接在过程中实现阿。
      

  2.   

    只允许输入数字,同时禁止粘贴:模块代码:
    Public OldWindowProc As LongDeclare 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
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Public Const GWL_STYLE = (-16)
    Public Const ES_NUMBER = &H2000
    Public Const GWL_WNDPROC = (-4)Private Const WM_CONTEXTMENU = &H7B
    Private Const WM_PASTE = &H302
    Public Function NewWindowProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If (msg <> WM_PASTE) And (msg <> WM_CONTEXTMENU) Then
            NewWindowProc = CallWindowProc(OldWindowProc, hWnd, msg, wParam, lParam)
        End If
    End Function-------------------------------------------窗体代码:
    Private Sub Form_Load()
        Dim style As Long
        style = GetWindowLong(Text1.hWnd, GWL_STYLE)
        SetWindowLong Text1.hWnd, GWL_STYLE, style Or ES_NUMBER
        OldWindowProc = SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf NewWindowProc)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        SetWindowLong Text1.hWnd, GWL_WNDPROC, OldWindowProc
    End Sub