You can handle the textbox’s KeyPress event and if the char passed in is not acceptable, mark the events argument as showing the character has been handled. Below is a derived TextBox that only accepts digits (and control characters such as backspace, …). Even though the snippet uses a derived textbox, it is not necessary as you can just add the handler to its parent form.
[C#]
public class NumbersOnlyTextBox : TextBox
{
public NumbersOnlyTextBox()
{
this.KeyPress += new KeyPressEventHandler(HandleKeyPress);
}
private void HandleKeyPress(object sender, KeyPressEventArgs e)
{
if(!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
e.Handled = true;
}
}
[VB.NET]
Public Class NumbersOnlyTextBox
Inherits TextBox
Public Sub New()
AddHandler Me.KeyPress, AddressOf HandleKeyPress
End Sub ’New
Private Sub HandleKeyPress(sender As Object, e As KeyPressEventArgs)
If Not Char.IsDigit(e.KeyChar) And Not Char.IsControl(e.KeyChar) Then
e.Handled = True
End If
End Sub ’HandleKeyPress
End Class ’NumbersOnlyTextBox
Share with