here's my solution. it works with empty text + invalid entries:
vb Code:
Public Class Form1
Dim textboxes() As TextBox
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
textboxes = Me.Controls.OfType(Of TextBox).Where(Function(tb) tb.Name.StartsWith("TextBoxHole")).ToArray
For Each tb As TextBox In textboxes
AddHandler tb.TextChanged, AddressOf tb_TextChanged
Next
End Sub
Private Sub tb_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim sum As Decimal = 0D
For Each tb As TextBox In textboxes
Dim value As Decimal = 0D
Decimal.TryParse(tb.Text, value)
sum += value
Next
TextBoxTotal.Text = sum.ToString
End Sub
End Class