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