Allora, dalla prima versione del framework (tanto tanto tmpo fa) avevo visto in un esempio di Francesco Balena, la forzatura della validazione, con Me.Validate()

Tempo dopo, visto che i validatori andavano a leggere le informazioni su database, notai che la procedura di validazione veniva richiamata due volte. Perciò l'ho tolta e funziona bene.
In un vecchio esercizio ho:
codice:
    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Try
            '----------------------------------------------------------------------
            'Me.Validate() è indispensabile se Button1 ha CausesValidation="False"
            '----------------------------------------------------------------------
            'Forza la validazione di tutti i controlli
            'Me.Validate()
            If Not Me.IsValid Then
                Throw New Exception("La scheda non ha passato i controlli di validità.")
            End If

            Salvo()



        Catch ex As Exception
            l.MsgBox(Me, ex)


        End Try

    End Sub
dove vedi che la forzatura della validazione è disabilitata, e funziona perfettamente.

Di più non so, però l'uso di AddHandler per gli eventi mi piace