Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB.Net]Problema verifica numero caratteri textbox

    Salve ragazzi ho un nuovo problema tra le mani che vi espongo di seguito:
    mi trovo ad avere una form con una checkbox e una decina di textbox, ora la checkbox serve per settare la proprietà "readonly" di tutte le textbox, quindi se "checked" saranno in sola lettura mentre se "unchecked" il contrario e fin qui tutto ok, il mio problema sorge nel momento in cui devo settarle tutte "readonly = True" ma solo se esse contengono 8 caratteri al loro interno, quindi dovrei avere un controllo che, nel qualcaso una di esse non soddisfi questa condizione, mi lasci la checkbox con proprietà "Enable = False" o che comunque non le faccia cambiare stato. E' qualche settimana che faccio delle prove ma non riesco a trovare una soluzione. La mia idea è stata quella di assegnare ad ogni textbox un ascoltatore su textchanged e verificare se essa contenesse 8 caratteri e fin qui ok ma poi come faccio a verificare che ognuna ne abbia 8 per sbloccare il checkbox? Se utilizzo un'unica funzione come ascoltatore e uso ad esempio:

    codice:
    if sender.TextLength = 8 Then
       checkbox.enabled = True
    End If
    il problema ovviamente è che se vado a modificare una textbox scrivendo 5 caratteri e poi ne modifico un'altra scrivendone 8 la condizione risulta vera e me la sblocca... Ho pensato anche di creare una sorta di "memoria" con un array di stringhe dove vado ad inserire il nome della textbox quando essa non ha 8 caratteri al suo interno, se invece li ha non la inserisco o la cancello, se presente, e alla fine verifico che l'array sia vuoto per sbloccare la checkbox, ma non mi sembra una soluzione adatta...
    Che mi proponete voi che siete più esperti?

    Grazie in anticipo a tutti

  2. #2
    Non ho capito una cosa: vuoi che la checkbox cambi il proprio valore in base alle modifiche fatte nelle textbox?

    Se non è così, nell'evento Click della checkbox non potresti controllare la proprietà Lenght di tutte le textbox? Della serie: se tutte le textbox hanno lunghezza = 8 allora..


    Ripensandoci, forse la tua difficoltà deriva dal fatto che nel .NET (a differenza del VB6) non è possibile creare matrici di controlli; in tal caso puoi ovviare facendo così:

    codice:
    Dim tuocontrollo As Control
    
    For Each tuocontrollo In Controls
    
    If .... Then    'qui controlli la proprietà che ti interessa, es. TextLenght 
                       ' qui svolgi le azioni che vuoi
    End If
    
    Next

    Fammi sapere..


    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970

    Stavo scrivendo pure io.............

    Per valutare la lunghezza del testo in tutte le TextBox puoi utilizzare una funzione del genere, ovviamente inserite nel contenitore che passerai come parametro.

    codice:
     Function ControlTextBox(ByVal container As Control) As Boolean
            For Each Control In container.Controls
                If TypeOf Control Is TextBox Then
                    If DirectCast(Control, TextBox).TextLength < 8 Then
                        Exit Function
                    End If
                End If
            Next
            Return True
        End Function
    Se ritorna True tutte le TextBox hanno la proprietà TextLength di almeno 8.
    Sbagliare è umano, perseverare è diabolico.

  4. #4
    Ragazzi siete fantasticiiii!!! grazie a voi ho risolto, effettivamente non conoscevo questa possibilità. C'è solo una cosa che vorrei capire meglio, il contenitore dei controlli cos'è? nel mio caso ho usato un array di oggetti e ci ho messo dentro tutte le textbox ma vorrei capire bene come funziona appunto quel contenitore.

    Grazie mille comunque per il vostro aiuto che mi è stato utilissimo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Per contenitore intendevo proprio il controllo dove sono inserite le TextBox. Per intenderci il contenitore può essere la stessa Form, un GroupBox o qualsiasi altro controllo che possa contenere altri controlli. Scusa il gioco di parole.
    Sbagliare è umano, perseverare è diabolico.

  6. #6
    Originariamente inviato da Pirelli72
    Per contenitore intendevo proprio il controllo dove sono inserite le TextBox. Per intenderci il contenitore può essere la stessa Form, un GroupBox o qualsiasi altro controllo che possa contenere altri controlli. Scusa il gioco di parole.
    E' quello che immaginavo, grazie di nuovo per il vostro aiuto. Per me il post si può chiudere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.