Ciclo su varie Textbox

di il
4 risposte

Ciclo su varie Textbox

Ciao a tutti, avrei necessità, se fattibile e per avere un codice più leggibile in futuro, di creare qualcosa che assegni a dele textbox delle proprietà specifiche come in esempio
 Private Sub TBp1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TBp1.KeyPress
        If Asc(e.KeyChar) = 8 Then ' Questo permette il tasto <-- per cancellare
            Exit Sub
        End If
        If Asc(e.KeyChar) = 44 Then
            MsgBox("Utilizzare il PUNTO come divisore di decimali")
            e.Handled = True
            Exit Sub
        End If
        If Asc(e.KeyChar) = 46 Then
            Exit Sub
        End If
        If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
            e.Handled = True
            MsgBox("Questo campo accetta solo numeri")
        End If
    End Sub
Io nel Form ho diverse textbox ma a quelle che vanno da TBp1 a TBp16 vorrei assegnare questo codice... si può fare con un ciclo o cosa simile o no? Non saprei proprio come gestirla...

Grazie

4 Risposte

  • Re: Ciclo su varie Textbox

    Ad esempio puoi scrivere

    Handles TBp1.KeyPress, TBp2.KeyPess

    e così via.
  • Re: Ciclo su varie Textbox

    orione1976 ha scritto:


    se fattibile e per avere un codice più leggibile in futuro, di creare qualcosa che assegni a dele textbox delle proprietà specifiche come in esempio
    Puoi sempre creare una classe di utilità statica (Shared) con un metodo (Sub) nel quale prendi in input una serie di TextBox e assegni dinamicamente una routine di gestione dell'evento configurato a piacere, magari in base ad altri valori specificati assieme alla stessa collezione di TextBox.

    In alternativa, potresti ereditare dalla classe TextBox e implementare una sua variante, ridefinendo (tramite Overrides) i metodi chiave che gestiscono gli eventi di tuo interesse, creando così una nuova casella di testo da mettere nella toolbox e usare quando vuoi al posto di quella tradizionale, agendo su eventuali Property personalizzate per attivare/disattivare le feature che ti interessano e che hai implementato al suo interno.

    Ovviamente, tutto è teorico e richiede di documentarsi adeguatamente in merito.

    Ad esempio, sull'ereditare controlli esistenti in Windows Forms (ho dato per scontato si parlasse di questo) puoi leggere questa pagina della documentazione ufficiale.

    Ciao!
  • Re: Ciclo su varie Textbox

    orione1976 ha scritto:


    si può fare con un ciclo o cosa simile o no? Non saprei proprio come gestirla...
    Tecnicamente si potrebbe fare con l'AddHandler dentro ad un ForEach, che sarebbe poi il consiglio di Oregon, ma dinamico a runtime. Personalmente opterei per una classe derivata come dice Alka.

    Se non vuoi derivare, un metodo potrebbe essere implementare un Extension Method, ma non gestiresti l'evento. Potresti creare un metodo che faccia il check, ma che andrebbe comunque richiamato in qualche evento (Validating o Validated per esempio). Avresti la comodità di avere il metodo centralizzato, come se fosse uno nativo della classe, ma senza toccare/derivare la classe. Ma nel tuo caso, ci vedo più contro che pro.

    Inheritance is the way!
  • Re: Ciclo su varie Textbox

    Ok grazie a tutti, ho seguito l'indicazione di Oregon in quanto secondo me più rapida attualmente, ciò non toglie che seguirò ovviamente anche gli altri consigli, e vado a studiarmi il link di Alka.... grazie a tutti
Devi accedere o registrarti per scrivere nel forum
4 risposte