+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Controllo e abilitazione button in panel [VB 2010]

  1. #1
    ljt
    ljt non è in linea Scolaretto
    Buonasera a tutti,

    sto creando un pannello con 6 text box e un Button di colore rosso al suo interno.
    3 text box sono auto compilate, mentre le altre 3 vengono riempite dall'utente.

    Vorrei che il Button, nel momento in cui tutte le text box risultano riempite, diventi di colore verde.
    Inoltre, se l'utente dovesse eliminare uno o più valori delle text box, il pulsante ritorni rosso.

    Esiste un evento oppure qualcosa che mi controlli di continuo i valori delle text box in modo tale da poter fare quello che chiedo?

    Grazie a tutti

  2. #2
    AlbertoM non è in linea Scribacchino
    Il controllo Timer.
    Oppure aggiungi nell'evento TextChanged di una TextBox anche i riferimenti agli eventi TextChanged di tutte le TextBox da controllare, e scrivi il codice relativo.
    Dopo Handles .... , TextBox2.TextChanged, TextBox3.TextChanged,.....
    ℹ️ Leggi di più su AlbertoM ...

  3. #3
    ljt
    ljt non è in linea Scolaretto
    Quote Originariamente inviato da AlbertoM Visualizza il messaggio
    Il controllo Timer.
    Oppure aggiungi nell'evento TextChanged di una TextBox anche i riferimenti agli eventi TextChanged di tutte le TextBox da controllare, e scrivi il codice relativo.
    Dopo Handles .... , TextBox2.TextChanged, TextBox3.TextChanged,.....
    Al timer avevo pensato, ma mi sembra una soluzione pesa, in quanto dovrei mettere un controllo continuo e ho paura che rallenti troppo.

    Ho provato la seconda soluzione e devo dire che fa quello che volevo.
    Di seguito il codice:
     Private Sub txtBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtBox1.TextChanged, txtBox2.TextChanged, txtBox3.TextChanged, txtBox4.TextChanged, txtBox5.TextChanged
            If Not String.IsNullOrEmpty(txtBox1.Text) And
                Not String.IsNullOrEmpty(txtBox2.Text) And
                Not String.IsNullOrEmpty(txtBox3.Text) And
                Not String.IsNullOrEmpty(txtBox4.Text) Then
                btnSalva.BackColor = Color.LimeGreen
                btnSalva.ForeColor = Color.White
                btnSalva.Enabled = True
            Else
                btnSalva.BackColor = Color.Red
                btnSalva.ForeColor = Color.White
                btnSalva.Enabled = False
            End If
    
        End Sub
    
    Grazie AlbertoM per la "soffiata". Ho imparato una cosa nuova.

    Ciao

  4. #4
    AlbertoM non è in linea Scribacchino
    Sul controllo Timer la penso come te, ma da dilettante, anche se navigato, credo che il parere di un professionista sia più valido.
    Contento di esserti stato utile. Grazie per il grazie.
    ℹ️ Leggi di più su AlbertoM ...

  5. #5
    Sgrubak non è in linea Scribacchino
    Io aggiungo di sfruttare l'operatore AndAlso, al posto del semplice And. Così facendo, se [String.IsNullOrEmpty(txtBox1.Text)] restituisce False, le altre nemmeno vengono controllate.

    Valuterei anche l'idea di effettuare il controllo all'interno dell'evento Validated, per una (insignificante) questione di efficienza: l'evento che stai sfruttando, viene eseguito ad ogni carattere digitato (e cancellato) all'interno di una delle 4 TextBox. Con Validated, verifichi solo quando stai abbandonando il controllo. Lo eseguiresti molte meno volte.
    Perderesti però l'effetto "accensione" appena cominci a digitare nell'ultima TextBox.

    P.S: come per [btnSalva], userei dei nomi che abbiano un significato anche per le TextBox.

  6. #6
    ljt
    ljt non è in linea Scolaretto
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Io aggiungo di sfruttare l'operatore AndAlso, al posto del semplice And. Così facendo, se [String.IsNullOrEmpty(txtBox1.Text)] restituisce False, le altre nemmeno vengono controllate.

    Valuterei anche l'idea di effettuare il controllo all'interno dell'evento Validated, per una (insignificante) questione di efficienza: l'evento che stai sfruttando, viene eseguito ad ogni carattere digitato (e cancellato) all'interno di una delle 4 TextBox. Con Validated, verifichi solo quando stai abbandonando il controllo. Lo eseguiresti molte meno volte.
    Perderesti però l'effetto "accensione" appena cominci a digitare nell'ultima TextBox.

    P.S: come per [btnSalva], userei dei nomi che abbiano un significato anche per le TextBox.
    Giusto. Ho provveduto con le modifiche da te segnalate. Ho inserito il codice in Validated e utilizzato AndAlso.
    Per i nomi delle textBox, essendo solo un codice di esempio da postare, non ho riportato i nomi "reali" ma comunque uso per praticità delle etichette "parlanti".

    Grazie per la precisazione utilissima.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Controllo panel non mostra la HorizontalScollbar.
    Da Dev-01 nel forum Visual Basic .Net
    Risposte: 0
    Ultimo Post: 27-03-2020, 17:12
  2. Risolto: [VB 2010] Cambiare tabpage con un button
    Da ommu nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 09-12-2012, 00:17
  3. Risolto: Controllo valori in StringGrid e abilitazione di un pulsante
    Da DoubleStar nel forum Delphi
    Risposte: 11
    Ultimo Post: 31-12-2011, 11:29
  4. VB 2008/2010 : Dubbi su Panel
    Da MarcoGG nel forum Visual Basic .Net
    Risposte: 8
    Ultimo Post: 26-12-2010, 10:07
  5. Disegnare su un controllo button
    Da Renero nel forum C#
    Risposte: 5
    Ultimo Post: 18-11-2008, 16:45