Click here to Skip to main content
14,638,468 members
Rate this:
Please Sign up or sign in to vote.
See more:
Hi, I was wondering how I can make it so that a Textbox is not able to accept "," (commas) whenever it is entered and therefore show "You cannot enter commas".

I want this as it will mess up my CSV file.

What I have tried:

Ive tried searching the net but no luck at all.
Updated 27-Jul-20 19:30pm
Rate this:
Please Sign up or sign in to vote.

Solution 1

Private Sub txtPin_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPin.KeyPress

e.Handled = "0123456789 ".IndexOf(e.KeyChar) = -1 AndAlso Not Char.IsControl(e.KeyChar)

End Sub

This will allow only "0123456789" characters.
Rate this:
Please Sign up or sign in to vote.

Solution 2

You can make use of events like: Control.KeyDown Event (System.Windows.Forms) | Microsoft Docs[^]

Then handle the scenario in the event. Sample:
' Boolean flag used to determine when a character other than a number is entered.
 Private nonNumberEntered As Boolean = False

 ' Handle the KeyDown event to determine the type of character entered into the control.
 Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _
      Handles textBox1.KeyDown
     ' Initialize the flag to false.
     nonNumberEntered = False
     ' Determine whether the keystroke is a number from the top of the keyboard.
     If e.KeyCode < Keys.D0 OrElse e.KeyCode > Keys.D9 Then
         ' Determine whether the keystroke is a number from the keypad.
         If e.KeyCode < Keys.NumPad0 OrElse e.KeyCode > Keys.NumPad9 Then
             ' Determine whether the keystroke is a backspace.
             If e.KeyCode <> Keys.Back Then
                 ' A non-numerical keystroke was pressed. 
                 ' Set the flag to true and evaluate in KeyPress event.
                 nonNumberEntered = True
             End If
         End If
     End If
     'If shift key was pressed, it's not a number.
     If Control.ModifierKeys = Keys.Shift Then
         nonNumberEntered = true
     End If
 End Sub

 ' This event occurs after the KeyDown event and can be used 
 ' to prevent characters from entering the control.
 Private Sub textBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) _
     Handles textBox1.KeyPress
     ' Check for the flag being set in the KeyDown event.
     If nonNumberEntered = True Then
         ' Stop the character from being entered into the control since it is non-numerical.
         e.Handled = True
     End If
 End Sub

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100