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)