(Tastatur) Eingaben Sperren

J

Java_Neuling

Morgen!

Auf alle fälle hab ich ein Textfeld in das ich nur Zahlen eingeben lassen möchte das klappt auch wunderbar das Komma ist auch schon eingebunden (der Code ist aus dem OpenBook von Galileo Computing) jetzt hab ich die ganze zeit versucht die Löschen-Taste zuzulassen kriegs aber nicht hin :( die Entfernen-Taste funktioniert aber die Löschen-Taste geht ums verrecken nicht. (Ich hoffe das ich den Code richtig verstehe :confused:)
Code:
    'Diese Zeilen überprüfen die Eingabe im tf_Einwurf während der Eingabe 'numeric' macht dies nach dem das Ereignis ausgelöst worden ist
    Private Sub tf_Einwurf_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tf_Einwurf.KeyPress
        Select Case Asc(e.KeyChar.ToString)
            Case Asc(",")
                If Me.tf_Einwurf.Text.IndexOf(",") >= 0 Then 'Wenn ein Komma schon vor kommt dann verhindere das 2
                    e.Handled() = True
                End If
            Case Is < Asc("0")
                e.Handled() = True  'Eingaben die Kleiner 0 sind verhindern
            Case Is > Asc("9")
                e.Handled() = True  'Eingaben die größer 9 sind verhindern
            Case Else
                e.Handled() = False 'Sonst ist alles erlaubt
        End Select
    End Sub
Ich hoffe ihr könnt mir helfen... Danke im voraus!

MfG
Java_Neuling
 
Moin moin,

weil ich gerade kein Visual Studio zur Hand habe, musste ich mal mein Google bemühen.

Also, mit KeyPress geht das, was du willst, laut MSDN nicht. Du bekommt nur das KeyChar.

Verwende stattdessen das KeyDown bzw. KeyUp Event. Die KeyEventArgs liefern dir einen KeyCode, diesen könntest du verwenden um ebenfalls auf die Rücktaste und gezielt auf die Delete (Entf) Taste zu reagieren.
 
Hi!

hmm ich hab des jetzt mal so probiert wie ich des verstanden hab und hab mir des mit KeyUp geschrieben aber dann wird irgendwie garnichts mehr überprüft :confused:
Bin totaler VB Neuling :(
Hättest vllt nicht ein Stück Code für mich an dem ich mich orientieren bzw auf dem ich aufbauen könnte :confused:

MfG
Java_Neuling
 
Falls mir niemand zuvor kommt, werde ich heute Abend ein wenig Code zu diesem Thema posten. :)

Bis dahin versuche es mal mit dem KeyDown-Ereignis, du willst ja die Eingabe verhindern, bevor das Zeichen in das Textfeld geschrieben wird.
 
Zuletzt bearbeitet:
So, leider einen Tag zu spät und doch komplexer als ich zunächst annahm.

C#:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (!((e.KeyValue >= 48 && e.KeyValue <= 57) ||     //Prüfung auf Tasten 0-9
        (e.KeyValue >= 96 && e.KeyValue <= 105) ||      //Prüfung auf NumPad 0-9
        (e.KeyCode == Keys.Back ||                      //Rücktaste
        e.KeyCode == Keys.Left ||                       //Pfeiltasten
        e.KeyCode == Keys.Right ||
        e.KeyCode == Keys.Delete) ||                    //Entf-Taste
        (e.KeyValue == 188 && !((TextBox)sender).Text.Contains(","))))      //Komma, nur einmalig zulassen
    {             
        e.SuppressKeyPress = true;      //KeyPress unterdrücken
        e.Handled = true;               
    }
}
 
Hey!

erst mal danke für deine Mühe!

was mir nur grad auffällt das bei mir alles mit Sub ist und bei dir mit Private void außerdem hab ich in meinem ganzen Code noch keine geschweifte Klammer (glaub ich!)
Falls die Frage dumm ist tuts mir leid bin seit ca 2 Wochen an VB.Net aber dein Code passt irgendwie nicht zu meinem kannst du mir vllt sagen wieso?
Deiner erinnert mich mehr an Java :confused:

MfG
Java_Neuling
 
Hi,

sorry, habe ich nicht bemerkt, das war C-Sharp Code ich habe den mal eben durch nen Code Converter gejagt und dabei kam das hier raus.
Sollte eigentlich in der KeyDown-Methode laufen.

Visual Basic:
If Not ((e.KeyValue >= 48 AndAlso e.KeyValue <= 57) OrElse (e.KeyValue >= 96 AndAlso e.KeyValue <= 105) OrElse (e.KeyCode = Keys.Back OrElse e.KeyCode = Keys.Left OrElse e.KeyCode = Keys.Right OrElse e.KeyCode = Keys.Delete) OrElse (e.KeyValue = 188 AndAlso Not DirectCast(sender, TextBox).Text.Contains(","))) Then
	e.SuppressKeyPress = True
	e.Handled = True
End If
 
das ist klar weil den Code den Donnerbalken gepostet hat ist C# und du brauchst VB.Net.

am Besten du schreibst es einfach manuell in deinen Code rein (nicht mit Copy&Paste) lässt die ganzen geschweiften Klammern weg und auch die ";".

Zur Not kannst du auch noch einen C# to VB.Net Translator googeln. Ich weiß aber nicht ob die zu 100% richtige Ergebnisse liefern.

Bei der ersten Methode lernst du defintiv mehr über deinen Code ;)

Ich hoffe ich konnte dir weiterhelfen.

mFg

\\EDIT: mist zu spät ^^
 

Neue Beiträge

Zurück