Search code examples
vb.nettextbox

allow numbers, dots and backspace and delete in textbox


i have the following code:

Private Sub TxtPStof_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtPStof.KeyPress
    e.Handled = Not (Char.IsDigit(e.KeyChar) Or e.KeyChar = ".")

End Sub

which allows only digits and . in my textbox, however i also need to be able to delete values using the backspace or the delete button.

Is this possible?

Thanks! :)


Solution

  • While I totally agree with the answer from Konrad Rudolph
    (It's really a messy affair to handle the user input in the KeyPress event)
    I wish to give an answer at your question.

    The MSDN in the KeyPress docs states that The KeyPress event is not raised by noncharacter keys. This means that you don't get the Delete key, but only the BackSpace key. You could handle this situation with this little change to your event handler

    Private Sub TxtPStof_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtPStof.KeyPress 
    
        if e.KeyChar <> ControlChars.Back then
            e.Handled = Not (Char.IsDigit(e.KeyChar) Or e.KeyChar = ".") 
        end if
    
    End Sub