Tasten verbieten

Hallo ganjin,

das ist am elegantesten per Subclassing möglich, wobei aber auch zahlreiche Alternativen zur Verfügung stehen (z.B. abfangen des KeyDown- bzw. KeyPress-Events). Zu diesem Thema gibt es übrigens unzählige Tutorials und Anleitungen. Um nur ein paar zu nennen:
Zusätzlich noch ein paar Infos zu den Key-Events von .NET:Falls Du noch Fragen haben solltest, schreibe nochmal. Übrigens sollte das Thema auch auf Tutorials.de zu finden sein.

Gruß
PhoenixLoe
 
Aha interesant. Ich möchte dass in das textfeld nur a-z und 0-9 geht, muss ich dann alt und strg und so alles verbieten? also so scheint mir das....
 
Versuchs doch einfach mal mit Regulären Ausdrücken.
Ich hab mal ein bisschen "rumprobiert".
Das ist dabei rausgekommen:
Visual Basic:
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim Zeigerpos As Integer = TextBox1.SelectionStart
        Dim Replace As String = System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, "([_]|[^\w\s])", "")
        If Replace.Length < TextBox1.Text.Length Then
            TextBox1.Text = Replace
            TextBox1.SelectionStart = Zeigerpos - 1
            TextBox1.ScrollToCaret() 'Nur wenn deine Textbox Mehrzeilig ist
        End If
    End Sub

Kannst du dir ja mal angucken und schauen, obs deinen Ansprüchen genügt. :)

PS: Wahrscheinlich kann man das Pattern viel besser machen, aber ich bin nicht so der RegEx-Experte :D
 
Zuletzt bearbeitet:
Überarbeitete Version:

Visual Basic:
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim Zeigerpos As Integer = TextBox1.SelectionStart
        Dim Replace As String = System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, "[^a-zA-Z0-9ß!\?\s]", "")
        If Replace.Length < TextBox1.Text.Length Then
            TextBox1.Text = Replace
            TextBox1.SelectionStart = Zeigerpos - 1
            TextBox1.ScrollToCaret() 'Nur wenn deine Textbox Mehrzeilig ist
        End If
    End Sub

MfG
 
Zuletzt bearbeitet:
Irgendwie kann ich diese Exception, mit dem Code, den ich habe, nicht reproduzieren. Hast du ihr in irgendeiner Weise verändert/angepasst?

Das -1 ist dafür, dass wenn du, während du mitten in einem Text/Wort bist und ein nicht erlaubtes Zeichen schreibst, der Cursor auf der gleichen Position bleibt und sich nicht um eins nach vorne schiebt.
 

Neue Beiträge

Zurück