ForceTextBoxNumeric - Force a TextBox control to accept only numeric digits
<System.Runtime.InteropServices.DllImport("user32")> Shared Function _
GetWindowLong(ByVal hWnd As Integer, ByVal nIndex As Integer) As Integer
End Function
<System.Runtime.InteropServices.DllImport("user32")> Shared Function _
SetWindowLong(ByVal hWnd As Integer, ByVal nIndex As Integer, _
ByVal dwNewLong As Integer) As Integer
End Function
' Force a TextBox control to accept only numeric digits
' Cancel the effect by passing Force = False
'
' Note that it only accepts positive integer values
Sub ForceTextBoxNumeric(ByVal ctl As TextBox, Optional ByVal force As Boolean = _
True)
Const GWL_STYLE = (-16)
Const ES_NUMBER = &H2000
' get current style
Dim style As Integer = GetWindowLong(ctl.Handle.ToInt32(), GWL_STYLE)
If force Then
style = style Or ES_NUMBER
Else
style = style And Not ES_NUMBER
End If
' enforce new style
SetWindowLong(ctl.Handle.ToInt32(), GWL_STYLE, style)
End Sub