laatste teken in een textbox

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Hoe kun je het laatst getypte teken in een textbox opvragen?
En hoe kun je dit teken vervangen als het een 'verkeerd' teken is?
Anders gezegd: Stel dat de gebruiker in je textbox een hoop tekst intypt, maar op een gegeven moment typt hij/zij een ~ waar dat niet mag, hoe kun je dan je programmaatje het automatisch laten vervangen door ""?
 
Code:
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = "~"c Then e.KeyChar = ""
    End Sub
 
Code:
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = "~"c Then e.KeyChar = ""
    End Sub

Dit werkt niet in visual basic express edition. (was ik er vergeten bij te vermelden: ik heb de express editie)
Weet iemand hoe dit wel gaat daar?

(in de express ed. bestaat 'keychar' niet eens):(
 
Code:
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim MyChar As Char = GetChar(TextBox1.Text, TextBox1.Text.Length)
    End Sub
 
Code:
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim MyChar As Char = GetChar(TextBox1.Text, TextBox1.Text.Length)
    End Sub

En hoe vervang ik deze dan door een ander teken?

Code:
If MyChar = "~" then MyChar = ""
Werkt niet... "Char" schijnt geen booleanwaardes aan te kunnen
 
Laatst bewerkt:
Dat lijkt me wel logisch ook,

MyChar houd alleen het laatste character vast. Dat heeft dus niets te maken met het vervangen van je char. Je kan dan gewoon iets gebruiken van :

If MyChar = "~" then Textbox1.Text.Replace(MyChar,"")

En je had namelijk 2 vragen ...

1) Hoe kun je het laatst getypte teken in een textbox opvragen?

Code:
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim MyChar As Char = GetChar(TextBox1.Text, TextBox1.Text.Length)
    End Sub

2) En hoe kun je dit teken vervangen als het een 'verkeerd' teken is?

Code:
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = "~"c Then e.KeyChar = ""
    End Sub


Belangrijk is wel dat je vraag2 in je KeyPress_Eventstaat. Want e is dan een System.Windows.Forms.KeyPressEventArgs die je toetsaanslagen kan registreren.
Je kan daar dan ook de laatste toetsaanslag opvragen.
Dim MyChar As Char = e.KeyChar , dat doet hetzelfde als mijn oplossing. Ik hoop dat je hiermee geholpen bent.
 
Werkt niet... "Char" schijnt geen booleanwaardes aan te kunnen
Laatst gewijzigd door famlam; Vandaag om 13:22.

Nee , klopt .. Char is één character. Geen True of False waarde.
 
...

2) En hoe kun je dit teken vervangen als het een 'verkeerd' teken is?

Code:
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = "~"c Then e.KeyChar = ""
    End Sub


Belangrijk is wel dat je vraag2 in je KeyPress_Eventstaat. Want e is dan een System.Windows.Forms.KeyPressEventArgs die je toetsaanslagen kan registreren.
Je kan daar dan ook de laatste toetsaanslag opvragen.
...


Bedankt! Ik had het in het keyup event gezet!

Weet jij misschien ook hoe je de ', de " en de enter hier kunt 'gebruiken'?
Want als ik invoer if e.keychar = " ' " dan wordt de rest commentaar,
Als ik invoer if e.keychar = """ dan sluiten de aanhalingstekens al, zonder " als het te vervangen symbooltje te zien
En als ik invoer if e.keychar = "
" dan wordt {enter} ook niet herkent als toetsaanslag.

Dit omdat de ' en de " ook niet gebruikt mogen worden, en de enter moet een functie krijgen.
 
Ik merk dat je bv. geen aanhalingstekens, Returns of tildes(~) wilt, maar bevoorbeeld wel a-z , A-Z en backspace

Dan kan je dat veel makkelijker oplossen door een Select Case te gebruiken. Ipv. -tig if-then-else statements.

de onderstaande code laat alleen die ASCII codes in je select door, de andere door de e.KeyChar op nul te zetten.

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

        Select Case Asc(e.KeyChar)
            Case 8, 48 To 57, 65 To 90, 97 To 122
                ' Backspace, 0-9, A-Z en a-z
            Case Else
                e.KeyChar = ""
        End Select

    End Sub
 
Laatst bewerkt:
Ik merk dat je bv. geen aanhalingstekens, Returns of tildes(~) wilt, maar bevoorbeeld wel a-z , A-Z en backspace

Dan kan je dat veel makkelijker oplossen door een Select Case te gebruiken. Ipv. -tig if-then-else statements.

de onderstaande code laat alleen die ASCII codes in je select door, de andere door de e.KeyChar op nul te zetten.

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

        Select Case Asc(e.KeyChar)
            Case 8, 48 To 57, 65 To 90, 97 To 122
                ' Backspace, 0-9, A-Z en a-z
            Case Else
                e.KeyChar = ""
        End Select

    End Sub

Bedankt! Dit scheelt me inderdaad heel wat typewerk!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan