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

    [VB.NET 2010] Abilitare button in funzione di 4 textbox

    Ciao a tutti, mi scuso in anticipo per la domanda che potrà sembrare banale ma vorrei sapere se c'è un modo per poter abilitare un command button in base al valore di 4 textbox presenti nello stesso form. Mi spiego meglio: il button si deve abilitare solo quando in tutte e 4 le textbox l'utente ha inserito anche un solo carattere, viceversa se anche una sola delle 4 textbox dovesse tornare ad essere vuota (l'utente ha cancellato un carattere ad esempio) il button deve tornare disabilitato. Dev'essere quindi una gestione "dinamica" della propietà enable...io avevo pensato di lavorare sull'evento textchanged di ciascuna textbox e controllare se era presente almeno un carattere nelle altre 3. Visto che il codice si allungherebbe molto nel caso in cui il numero di textbox aumentasse vorrei sapere se esiste un metodo alternativo per realizzare questo controllo\abilitazione.

  2. #2
    potresti fare in questo modo:
    codice:
     Private sub textbox4_textchanged
    if textbox1.text="" and
    textbox2.text="" and
    textbox3.text="" then
    button1.enabled=false
    else
    button1.enabled=true
    end if
    p.s. scusa se il codice non è scritto bene, l'ho scritto senza vb sotto.
    RichiFra03

  3. #3
    Se invece vuoi che sia abilitato solo se ogni textbox contiene UN SOLO carattere potresti fare:
    codice:
     Private sub textbox4_textchanged
    if textbox1.trim.lenght<>1 and
    textbox1.trim.lenght <> 1
    textbox1.trim.lenght <> 1
    textbox1.trim.lenght <> 1 then
    button1.enabled=true
    else
    button1.enabled=false
    end if
    RichiFra03

  4. #4
    Oppure puoi usare il comando directcast.
    RichiFra03

  5. #5
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Se non vuoi preoccuparti del numero delle textbox devi usare delle funzioni ricorsive e "raggruppare" l' evento TextChanged, vedi esempio sotto, l' unico accorgimento è identificare le textbox sottoposte a controllo, io ho usato la proprietà Tag impostando la stringa "controllata":
    codice:
        Dim lista As New List(Of TextBox)
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Button1.Enabled = False
    
            For Each c As Control In Me.Controls
                If c.Tag = "controllata" Then
                    lista.Add(c)
                    AddHandler c.TextChanged, AddressOf TextBox_TextChanged
                End If
            Next
    
        End Sub
    
        Private Sub TextBox_TextChanged(ByVal sender As TextBox, ByVal e As System.EventArgs)
            Dim attiva As Boolean = True
    
            For Each T As TextBox In lista
                If T.Text = "" Then
                    attiva = False
                    Exit For
                End If
            Next
    
            If attiva = True Then
                Button1.Enabled = True
            Else
                Button1.Enabled = False
            End If
    
        End Sub
    Se a runtime vuoi escludere/aggiungere delle textbox in base ad una scelta ti basta rimuoverle/aggiungerle alla lista.
    Tieni presente che basta uno "spazio" per scavalcare il controllo...in questo caso devi assegnare il testo della textbox ad una variabile, usare la funzione Trim ed eseguire la verifica su questa variabile.
    Ciao

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.