Gestione lettere accentate

di il
8 risposte

Gestione lettere accentate

Buonasera a tutti, vorrei che la mia TEXTBOX gestisse solo lettere (e fin qui ci siamo) comprese le lettere accentate o quelle straniere (ç,  ü, ä ecc…) e qui non ci siamo.

Mi dà un'errore. Questo è il codice:

    Private Sub TbxCognome_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TbxCognome.KeyPress

        Dim KeyAscii As Byte = Asc(e.KeyChar)
        If KeyAscii < 65 And KeyAscii <> 24 And KeyAscii <> 8 And KeyAscii <> 39 Then
            KeyAscii = 0
        ElseIf KeyAscii > 90 And KeyAscii < 97 Then
            KeyAscii = 0
        ElseIf KeyAscii > 122 And KeyAscii < 128 Then
            KeyAscii = 0
        ElseIf KeyAscii > 154 And KeyAscii < 160 Then
            KeyAscii = 0
        ElseIf KeyAscii > 165 Then
            KeyAscii = 0
        End If
        e.KeyChar = Chr(KeyAscii)

    End Sub

Grazie e a presto.

8 Risposte

  • Re: Gestione lettere accentate

    28/04/2024 - joker7421 ha scritto:


    Mi dà un'errore

    Siamo indovini?

  • Re: Gestione lettere accentate

    Grazie Oregon per la risposta ,

    ogni qualvolta provo a digitare una lettera accentata mi si apre una nuova scheda con il file “strings.cs” con all'interno tutte le funzioni riguardanti le stringhe.

    L'errore lo dà su questa funzione: “public static int Asc(char String)” che assegna alla variabile il codice Ascii corrispondente al tasto premuto.

    Eccezione non gestita

    System.NotSupportedException: 'No data is available for encoding 1252. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.'

  • Re: Gestione lettere accentate

    Forse forse ho risolto così, con il metodo “Char.IsLetter”, contenuto in uno dei codice sorgente “Char.cs”, come segue:

        Private Sub TbxCognome_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TbxCognome.KeyPress
            If Not Char.IsLetter(e.KeyChar) And e.KeyChar <> vbBack Then
                e.Handled = True
            Else
                e.KeyChar = UCase(e.KeyChar)
            End If
        End Sub
    

    Ho provato con quasi tutte le lettere straniere e sembra funzionare.

  • Re: Gestione lettere accentate

    Che senso ha la parte della Else se il carattere non è una lettera?  

  • Re: Gestione lettere accentate

    29/04/2024 - oregon ha scritto:


    Che senso ha la parte della Else se il carattere non è una lettera?  

    Nessun senso … mancata pulizia del codice.

    Grazie.

  • Re: Gestione lettere accentate

    Ma soprattutto che senso ha tutto il codice che hai scritto ??

    se (da come capisco) l'intenzione è quella di portare tutto in maiuscolo quello che l'utente digita, non devi scrivere nessuna riga di codice, basta che nelle proprietà del textBox metti:
    CharacterCasing = Upper
    e non devi fare altro 

  • Re: Gestione lettere accentate

    Dove e quando ha chiesto la conversione da minuscolo a maiuscolo?

    Pensavo volesse impedire la digitazione di caratteri numerici e simboli…

  • Re: Gestione lettere accentate

    29/04/2024 - SirJo ha scritto:


    Ma soprattutto che senso ha tutto il codice che hai scritto ??

    se (da come capisco) l'intenzione è quella di portare tutto in maiuscolo quello che l'utente digita, non devi scrivere nessuna riga di codice, basta che nelle proprietà del textBox metti:
    CharacterCasing = Upper
    e non devi fare altro 

    Innanzitutto grazie per la risposta. Effettivamente, come diceva “sihsandrea” non ho chiesto la conversione da minuscolo a maiuscolo ma la gestione delle lettere accentate non appartenenti all'alfabeto italiano che non il metodo “IsLetter” ho risolto.

    Grazie a tutti.

Devi accedere o registrarti per scrivere nel forum
8 risposte