Punkteingabe verhindern in .Net

Christoph1972

Erfahrenes Mitglied
Hallo,

wie kann ich es mit Net machen, das die User keine Punkte, oder Buchstaben eingeben können?

Mit VB.6 habe ich das so gemacht:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStr("0123456789,", Chr$(KeyAscii)) = 0 And KeyAscii <> vbKeyBack Then KeyAscii = 0
End Sub

Das geht aber nun nicht mehr. Mit Buchstaben, das bekomme ich mit IsNumeric hin, das klappt so weit. Aber wichtiger ist mir die Punkteingabe, da es zu Rechenfehlern kommen kann, die fatal wären. Aber ich finde die VB.6 Lösung eigentlich optimal, da ich mit ihr alles abdecke und keine Abfragen starten muss. Könnte mir jemand den Code übersetzen, oder mir in der MSDN zeigen, wo ich ihn finde?




Gruß

Christoph
 
Zuletzt bearbeitet:
Hi Christoph,

versuch mal:
Code:
 Private Sub txtGeld_KeyPress(ByVal sender As _
Object, ByVal e As _
System.Windows.Forms.KeyPressEventArgs) _
Handles txtGeld.KeyPress
Select Case Asc(e.KeyChar.ToString)
   Case Is < Asc("0")
	  e.Handled() = True
   Case Is > Asc("9")
	  e.Handled() = True
   Case Else
	  e.Handled() = False
   End Select
End Sub
Gruß
Bobje1
 
Oder so

Code:
Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        If Not e.KeyChar = vbBack Then
            If Not IsNumeric(e.KeyChar) And Not e.KeyChar = Chr(Keys.OemPeriod) Then
                e.Handled = True
            End If
        End If

End Sub

Jens
 
Hallo,

Tausend Dank Das ist genau das was ich brauchte! Ich habe mich aber für die Lösung von Jens entschieden.

Gruß


Christoph
 
Hups, da war ich zu schnell! Die Kommaeingabe ist auch geblockt :) bei beiden Lösungen. Bei dem Vorschlag von Bobje ist zu dem die Insdel Taste geblockt.

Lg

Christoph
 
Zuletzt bearbeitet:
Was du auch kanst verschuchen ist um . zu andern in , mit folgendem code:

Code:
Private Sub Form1_KeyPress(ByVal sender As Object, _ 
				 ByVal e As System.Windows.Forms.KeyPressEventArgs) _ 
				 Handles MyBase.KeyPress 
		If e.KeyChar = "." Then 
			SendKeys.Send(",") 
			e.Handled = True 
		End If 
	End Sub
Du must aber den KeyPreview im Eigenschaftenfenster auf enabled setzen. Und den code komt dan im:
Form1_KeyPress event

Gruß
Bobje1
 

Neue Beiträge

Zurück