Envias el textbox completo, si te das cuenta yo utilizo un for each definiendo la variable C as Control, un textbox es un Control, entonces C es un control del tipo textbox con todo y sus propiedades, fijate en el procedimiento anterior , y ves cuando hago un Ctype(c,textbox).text estoy accesando al control, y le digo con Ctype que lo interprete como un textbox y si se puede interpretar, puedo acceder a su propiedad Text, en el caso de string.isnullorEmpty verifico si el text del control (textbox) esta vacio si es asi, envio el objeto completo a un procedimiento vinculaerror(c) donde vincula error espera un parametro tipo control y ahi lo valido, mira el proc de validación
Código vb:
Ver originalPublic Function VinculaError(ByVal C As Control)
errprovider = New ErrorProvider
errprovider.SetError(C, "Campo Requerido")
errprovider.BlinkRate = 1000
End Function
Date cuenta de otra cosa primero verifico o trato de ver si es un tipo de control con TypeOf y lo comparo si es un combobox que haga un tipo de verificacion y si es un tipo textbox que verifique la propieda text, ahora con datetimepicker seria asi
Código vb:
Ver originalIf TypeOf C Is DatetimePicker Then
If IsNothing(CType(C, DatetimePicker).Value) OrElse Not IsDate(CType(C, DatetimePicker).Value) Then
VinculaError(C)
Return False
End If
End If