bestimmte Zeichen bei eingabe in Textbox verbieten.

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Manschula.

    bestimmte Zeichen bei eingabe in Textbox verbieten.

    Hallo zusammen,

    ich gebe in einem Programm Bezeichnungen in eine Textbox ein und daraus wird eine Ordnerstruktur erstellt.
    Nun möchte ich, dass nur gültige Zeichen bzw. Buchstaben für einen Ordnerpfad in die Textboxen eingegeben werden darf.
    Also kein / kein? kein% usw.

    Ich habe mir überlegt, das ganze über diesen Weg zu lösen,

    VB.NET-Quellcode

    1. if TextBox1.Text.Contains("/")=true then
    2. MsgBox("ungültiges Zeichen")
    3. End if

    usw.
    Aber ich denke, da wird es bestimmt eine elegantere Lösung für geben oder?
    Am besten sollte die Abfrage schon während der Eingabe erfolgen.

    Schon mal vielen Dank für Eure Tips im vorraus!

    Gruß
    Naja, viel elleganter wird mans nich lösen können
    >

    VB.NET-Quellcode

    1. Private Sub TextBox1_TextChanged(...) Handles TextBox1.TextChanged
    2. If TextBox1.Text.Contains("/") Then
    3. TextBox1.Text = Replace(TextBox1.Text, "/", "")
    4. End If
    5. End Sub

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    2. If e.KeyChar = "/" Then
    3. e.Handled = True
    4. End If
    5. End Sub

    Tipp: Die Suchfunktion hat die Lösung gebracht.
    Hallo,

    ich habe mich für die Methode von der Kurt entschieden, da die Zeichen direkt bei der Eingabe geprüft und ggf. geblockt werden.

    Ich möchte allerdings auch Anführungszeichen ausschliessen.
    Das habe ich bis jetzt noch nicht hinbekommen.

    Mein Code

    VB.NET-Quellcode

    1. Private Sub artikel_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles artikel.KeyPress
    2. If e.KeyChar = "\" Then
    3. e.Handled = True
    4. End If


    Ich habe schon verschiedene Sachen probiert -z.B zwei Hochkommas das funktioniert nicht, da die Hochkommas für Komentare vorgesehen sind. Eigentlich müsste es so aussehen """ aber da erkennt vb nur ein Leerzeichen und macht mir hinter Then noch ein "
    Dann habe ich mir überlegt, ob ich das ganze über die ASCII Tabelle machen kann, da ist ja für jedes Zeichen eine Zahl vorgesehen.
    Allerdings weiß ich da nicht genau wie ich das hinbekomme habe auch schon gegoogelt usw. aber ohne erfolg.

    Über einen Tip würde ich mich freuen.

    Dann noch eine Frage.

    Kann ich die auszuschliessenden Zeichen hintereinandersetzen?
    Ich kann ja auch zb. Variable mit dem & Zeichen zusammen bauen.
    Ich hatte mir das in etwa so gedacht:

    VB.NET-Quellcode

    1. Private Sub artikel_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles artikel.KeyPress
    2. If e.KeyChar = "\" or "?" or "§" or "&" Then
    3. e.Handled = True
    4. End If

    funktioniert aber nicht.

    Oder muss ich das ganze so schreiben

    VB.NET-Quellcode

    1. Private Sub artikel_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles artikel.KeyPress
    2. If e.KeyChar = "\" Then
    3. e.Handled = True
    4. End If
    5. If e.KeyChar = "&" Then
    6. e.Handled = True
    7. End If
    8. If e.KeyChar = "?" Then
    9. e.Handled = True
    10. End If


    Ich wäre über Tips dankbar

    Gruß wemser

    Vielen Dank

    Vielen Dank, Das mit dem " hat geklappt und der Rest mit dem

    VB.NET-Quellcode

    1. Select Case e, KeyChar
    2. Case "?", "\", "&", "%"
    3. e.Handled = True


    hat auch Super geklappt.

    Vielen Dank nochmal.

    In diesem Forum kann man echt was lernen.
    Hey,

    gs93 schrieb:

    So geht das doch viel einfacher.
    jap. So ist es natürlich viel kürzer. Ich habe es so gemacht, dass wemser gleich den Aubau (und mögliche Ausbaumöglichkeiten) der Select-Case Methode sieht :D Falls er mal noch Zeichen-Abhängig Aktionen ausführen will...

    Aber wenn er sowieso nur eine Aktion ausführen will, ist es so natürlich genau richtig.

    Gruß, Manschula