Public Class QuarterlyTextbox
Inherits TextBox
Private _validKeys As New List(Of Keys) From
{
Keys.D0, Keys.NumPad0,
Keys.D1, Keys.NumPad1,
Keys.D2, Keys.NumPad2,
Keys.D3, Keys.NumPad3,
Keys.D4, Keys.NumPad4,
Keys.D5, Keys.NumPad5,
Keys.D6, Keys.NumPad6,
Keys.D7, Keys.NumPad7,
Keys.D8, Keys.NumPad8,
Keys.D9, Keys.NumPad9,
Keys.Decimal, Keys.OemPeriod
}
Private _controlKeys As New List(Of Keys) From
{
Keys.Back, Keys.Delete,
Keys.Left, Keys.Right,
Keys.Home, Keys.End
}
Protected Overrides Sub OnKeyDown(e As KeyEventArgs)
If _controlKeys.Contains(e.KeyData) Then
MyBase.OnKeyDown(e)
Return
End If
If (Not _validKeys.Contains(e.KeyData)) OrElse
(Me.Text.EndsWith(".25") OrElse Me.Text.EndsWith(".50") OrElse Me.Text.EndsWith(".75")) OrElse
(Me.Text.Contains(".") AndAlso (e.KeyData = Keys.Decimal OrElse e.KeyData = Keys.OemPeriod)) OrElse
(Me.Text.EndsWith(".") AndAlso e.KeyData <> Keys.D2 AndAlso e.KeyData <> Keys.NumPad2 _
AndAlso e.KeyData <> Keys.D5 AndAlso e.KeyData <> Keys.NumPad5 _
AndAlso e.KeyData <> Keys.D7 AndAlso e.KeyData <> Keys.NumPad7) OrElse
((Me.Text.EndsWith(".2") OrElse Me.Text.EndsWith(".7")) AndAlso e.KeyData <> Keys.D5 AndAlso e.KeyData <> Keys.NumPad5) OrElse
(Me.Text.EndsWith(".5") AndAlso e.KeyData <> Keys.D0 AndAlso e.KeyData <> Keys.NumPad0) Then
e.SuppressKeyPress = True
e.Handled = True
Return
End If
MyBase.OnKeyDown(e)
End Sub
End Class
Open in new window