Friend Sub MasKit(ByVal cols As DataColumnCollection) For Each Ctrl In Me.Controls If (TypeOf Ctrl Is IControlMaskit) Then Dim icm As IControlMaskit = CType(Ctrl, IControlMaskit) If icm.Mask <> "" Then Exit Sub End If Dim B As Binding = Ctrl.DataBindings.Item(0) Dim O As Object = B.DataSource If Not (TypeOf O Is DataTable) Then O = CType(O, DataView).Table End If Dim c As DataColumn = CType(O, DataTable).Columns(B.BindingMemberInfo.BindingField) Select Case c.DataType Case GetType(System.String) ' Possible error c.MaxLength can be negative..... icm.Mask = ">" & New String("A", c.MaxLength) Case GetType(System.DateTime) icm.Mask = ">##/AAA/##" End Select End If Next End Sub End Class Public Interface IControlMaskit Property Mask() As String End InterfaceThis would also allow you to use this with controls other than just TextBox...
Friend Sub MasKit(ByVal cols As DataColumnCollection) >> For Each Ctrl In Me.Controls >> If (TypeOf Ctrl Is IControlMaskit) Then >> CType(Ctrl, IControlMaskit).MaskIt(cols) >> End If >> Next >> End Sub
Friend Sub MaskIt(ByVal cols As DataColumnCollection) Implements IControlMaskit.MaskIt >> If Me.Mask <> "" Then >> Exit Sub >> End If >> >> Dim B As Binding = Me.DataBindings.Item(0) >> >> Dim O As Object = B.DataSource >> If Not (TypeOf O Is DataTable) Then >> O = CType(O, DataView).Table >> End If >> >> Dim c As DataColumn = CType(O, DataTable).Columns(B.BindingMemberInfo.BindingField) >> >> Select Case c.DataType >> Case GetType(System.String) >> ' Possible error since MaxLength can be negative..... >> Me.Mask = ">" & New String("A", c.MaxLength) >> Case GetType(System.DateTime) >> Me.Mask = ">##/AAA/##" >> End Select >> End SubIf not then at least it's a bit shorter (s)