[RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

di il
8 risposte

[RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

Buongiorno

Ho scritto una classe derivata da TextBox per aggiungere alcune funzionalità in fase di digitazione

Public Class CTextBox
    Inherits TextBox
 Public Property Tipocampo() As Integer
    Get
        Return _TipoCampo
    End Get
    Set(ByVal value As Integer)
        _TipoCampo = value
    End Set
End Property


Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs)
    Dim keyAscii As Integer = Asc(e.KeyChar)
    
  Select Case Tipocampo
    Case tcc.Alfabetico
        If Not TCaratt(keyAscii, tcc.Alfabetico) Then
            e.KeyChar = ""
            Exit Sub
        End If
    Case tcc.Alfanumerico
        Exit Sub

    Case tcc.Numerico
        If Not TCaratt(keyAscii, tcc.Numerico) Then
            e.KeyChar = ""
            Exit Sub
        End If
    Case tcc.DataA    

La Sub OnKeyPress      intercetta il digit  da cui estraggo il codice Ascii; in base al tipocampo eseguo dei test, se tipocampo Alfabetico accetto solo lettere.

All'interno di questa SUB ho bisogno di sapere  quanti caratteri sono stati digitati precedentemente.

Come posso fare?

Franco

8 Risposte

  • Re: [RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

    07/01/2026 - Frankq ha scritto:

    La Sub OnKeyPress      intercetta il digit  da cui estraggo il codice Ascii; in base al tipocampo eseguo dei test, se tipocampo Alfabetico accetto solo lettere.

    All'interno di questa SUB ho bisogno di sapere  quanti caratteri sono stati digitati precedentemente.

    Come posso fare?

    Nel dubbio: compro una vocale!

    Che significa quanti caratteri sono stati digitati?

    "Andrea" quanti caratteri ha?

    L'utente scrive "Andrea" oppure 10011100, 10011101, ecc?

    E che significa intercettare "A" e convertirlo in ASCII per sapere che è una lettera?

    Non capisco...

  • Re: [RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

    07/01/2026 - Frankq ha scritto:

    All'interno di questa SUB ho bisogno di sapere  quanti caratteri sono stati digitati precedentemente.

    Tipo la lunghezza del testo?

  • Re: [RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

    Ciao 

    Diciamo che l'utente deve digitare una data nel formato ggmmAAAA

    Il primo controllo è se è un numero, semplice!

    i controlli successivi sono su le coppie di numeri, ha digitato 22?  se i numeri digitati sono 2 allora è un giorno, se sono 4 è giorno e mese, se sono 7 non ha ancora terminato di digitare l'anno

    (i caratteri spaziatrici per la data li aggiunge il programma)

    praticamente ogni digit si controlla che sia coerente e a fine digitazione appare la data ne formato  GG/MM/AAAA. Quando preme il button di conferma non vi sono controlli da fare

    Spero di essermi spiegato bene

    Franco

  • Re: [RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

    Perfetto! Perché non usi un formato data?

    Se tratti le date non usare campi testo: ti complica la vita.

    Se si tratta di una maschera di input puoi intercettare il keypress ed escluderle se non sono 0 1 2 3 4.5.6.7.8.9

    Al Key=invio formatti il dato come data e lo rilasci.

    Spesso l'utente scrive 

    07/02/25

    Oppure 

    07/02/2025

    Oppure 

    070225 o, ancora, 07022025

    Al programma il compito di rilasciarlo nel formato data.

    Controlli la lunghezza del testo (sei sicuro che siano solo numeri) e formatti la data.

  • Re: [RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

    07/01/2026 - sihsandrea ha scritto:

    Al programma il compito di rilasciarlo nel formato data.

    Controlli la lunghezza del testo (sei sicuro che siano solo numeri) e formatti la data.

    Infatti il problema è la lunghezza del testo.

    In una situazione classica dove il controllo si fà a fine digitazione  di tutta la maschera, io so che Textbox1.text è il campo che mi interessa e Textbox1.text.Length  mi da la lunghezza.

    Invece io sono all'interno di una classe CTextBox  in uma SUB

    Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs)

    e non so come fare a prendere la lunghezza del testo  (sono principiante in VB.Net)

    Franco

  • Re: [RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

    Occhio alla gestione dei campi di EDIT e della tastiera ... ci sono anche "caratteri" che non sono caratteri ma bensi "valori" funzionali come le frecce, il CANC, l'ESC, il PGDN, l'ALT, etc ....... e l'utente potrebbe premerli per correggere l'Input.

    Il KEYPRESS non intercetta questi "tasti" normalmente. Quindi non si possono prendere i singoli caratteri digitati e "concatenarli" per vedere quale è il valore effettivo.

    Occhio anche al copia / incolla ...

    Quindi forse è meglio concentrarsi su ciò che c'è nel campo in ogni modifica senza leggere il carattere di per se e valutare ogni composizione per vedere se è valida sino a quel punto.

    Ma non esiste in VBA un controllo tipo TMASKEDIT (cioè quello che si vede con le lineette e le barrette a suddividere i campi '__/__/__') con la sua definzione di validità di immisione ?

  • Re: [RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

    Buongiorno,

    E' bastato inserire nelle dichiarazioni della classe 

    Private TextBox1 As TextBox

    a questo punto mi accetta l'istruzione  

    TextBox1.Text.Length

    Grazie per l'aiuto

    Franco

  • Re: [RISOLTO]Conoscere i l numero di caratteri in una textbox da codice

    08/01/2026 - Frankq ha scritto:

    E' bastato inserire nelle dichiarazioni della classe

    Non ha molto senso dichiarare un campo di tipo TextBox in una classe che eredita dalla TextBox. Ti basta Me.TextLength per sapere quel è la lunghezza del testo digitato nel controllo derivato.

    07/01/2026 - Delphinium ha scritto:

    Ma non esiste in VBA un controllo tipo TMASKEDIT (cioè quello che si vede con le lineette e le barrette a suddividere i campi '__/__/__') con la sua definzione di validità di immisione ?

    In VBA mi pare proprio di no (smanaccio Excel ma magari Access ha qualcosa). Nel .NET credo sia la MaskedTextBox. Derivando a sua volta anche lei da TextBoxBase, ha sempre la TextLenght a disposizione.

Devi accedere o registrarti per scrivere nel forum
8 risposte