Only allow numeric values in the textbox

前端 未结 12 920
南笙
南笙 2021-01-12 03:53

I want to make a TextBox control that only accepts numerical values.

How can I do this in VB6?

相关标签:
12条回答
  • 2021-01-12 03:57

    I used this code in my project:

    Private Sub txtReceiptID_KeyPress(KeyAscii As Integer)
    Dim Keychar As String
    If KeyAscii > 31 Then
        Keychar = Chr(KeyAscii)
        If Not IsNumeric(Keychar) Then
            KeyAscii = 0
        End If
    End If
    

    End Sub

    0 讨论(0)
  • 2021-01-12 03:57

    Just select the control and the keyPress method and the IDE create the next method for you. Then add the next code inside the method

    Private Sub txtControl_KeyPress(KeyAscii As Integer)
       KeyAscii = RealKeyascii(txtControl, KeyAscii, 256 ^ 8)
    End Sub
    
    0 讨论(0)
  • 2021-01-12 03:58

    i usually use this code:

    Private Sub text1_KeyPress(KeyAscii As Integer)
        If Not IsNumeric(text1.Text & Chr(KeyAscii)) And Not KeyAscii = 8 Then KeyAscii = 0
    End Sub
    
    0 讨论(0)
  • 2021-01-12 04:03
    If Len(Text2.Text) > 0 Then
        If IsNumeric(Text2.Text) = False Then
            Text2.SetFocus
            CreateObject("WScript.Shell").SendKeys "{BACKSPACE}"
        End If
    End If
    
    0 讨论(0)
  • 2021-01-12 04:05

    TRY THIS CODE: DISABLES LETTER(A-Z,a-z) AND ACCEPTS BACKSPACE, DOTS, COMMAS AND NUMBERS(0-9) =)

    Private Sub Text1_KeyPress(KeyAscii As Integer)
    If Not (KeyAscii >= vbKeyA And KeyAscii <= vbKeyZ) And Not (KeyAscii >= 97 And KeyAscii <= 122) Then
    Else
    KeyAscii = 0
    End If
    End Sub

    0 讨论(0)
  • 2021-01-12 04:07

    I let the API do it for me. I add this function to a .bas module and call it for any edit control that I need to set to numeric only.

    Option Explicit
    
    Private Const ES_NUMBER = &H2000&
    Private Const GWL_STYLE = (-16)
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    
    
    'set an editbox to numeric only - return the previous
    'style on success or zero on error
    Public Function ForceNumeric(ByVal EditControlhWnd As Long) As Long
        Dim lngCurStyle As Long
        Dim lngReturn As Long
    
        lngCurStyle = GetWindowLong(EditControlhWnd, GWL_STYLE)
        If lngCurStyle <> 0 Then
            lngReturn = SetWindowLong(EditControlhWnd, GWL_STYLE, lngCurStyle Or ES_NUMBER)
        End If
    
        ForceNumeric = lngReturn
    
    End Function
    

    To use it call the function with the handle of the TextBox.

    Private Sub Form_Load()
        Dim lngResult As Long
    
        lngResult = ForceNumeric(Text1.hwnd)
    
    End Sub
    
    0 讨论(0)
提交回复
热议问题