You could have one Method listen to the Events of all those controls.
For example:
Private Sub ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckChanged, TextBox1.TextChanged, NumericUpDown1.ValueChanged
DoSomething(DirectCast(sender, Control))
End Sub
Private Sub DoSomething(ByVal ctl As Control)
End Sub
Alternatively you could have a seperate Method for each Control.
Private Sub CheckBox1_CheckChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckChanged
DoSomething(DirectCast(sender, Control))
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
DoSomething(DirectCast(sender, Control))
End Sub
Private Sub NumericUpDown1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
DoSomething(DirectCast(sender, Control))
End Sub
Private Sub DoSomething(ByVal ctl As Control)
End Sub
The latter approach gives you the ability to also do something specific for each of the Controls when their value changes.
No matter which approach you pick (or you take a bit of both) you should do this for all of the 50 Controls.