Jag har en textbox som jag vill att man bara ska kunna skriva in siffror och kunna sudda ut siffrorna med backspace. Om du använder det här:Hur filtrerar jag inmatning till en texbox?
Så min första idé var att använda mig av eventet KeyPress för textboxen och med Char.IsDigit():
Private Sub TextBoxFilFormatPosNumber_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBoxFilFormatPosNumber.KeyPress
If Not Char.IsDigit(e.KeyChar) Then
e.Handled = True
End If
End Sub
Den funkade jättebra förutom att det inte går att sudda min inmatning med backspace! Har försökt att jämföra med '8' som är ASCII för backspace utan lycka!
Har även försökt med eventet KeyDown och skrev då följande if -sats i den:
If Not ((e.KeyCode > Keys.D0 And e.KeyCode < Keys.D9) Or e.KeyCode = Keys.Back) Then
e.Handled = True
End If
Men då struntar .NET i att e.handled = true och skriver ut alla tecken jag skriver i alla fall!
(Varför funkar KeyPressEventArgs.Handled men inte KeyEventArgs.Handled?)
Finns det nån som vet hur man filtrerar en en textbox i för windowsapp i VB.NET??Sv: Hur filtrerar jag inmatning till en texbox?
<code>
Private Sub TextBoxFilFormatPosNumber_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBoxFilFormatPosNumber.KeyPress
If Not Char.IsControl(e.KeyChar) And Not Char.IsDigit(e.KeyChar) Then
e.Handled = True
End If
End Sub
</code>
Så kan du skriva negativa och positiva tal och ta bort med delete/backspace.
/Micke