自定义输入数字的TextBox
本人是新手,最近学习用做一个小系统。却发现没有Access 中那样只输入数字的文本框,感到很不方便。便想做一个自定义控件,于是在网上找,终于找到一个自认为比较好的方法。先分享给大家,同时希望高手加以指点。VS2010
新建项目==>VB windows模板中选择==》Windows窗体控件库==》UserControl1.vb窗体(不要管他,在此项目中新建一个类 NumTextBox)代码如下
Public Class NumericTextBox
Inherits TextBox ‘从TextBox 继承
'重写KeyPress事件
Protected Overrides Sub OnKeyPress(ByVal e As KeyPressEventArgs)
MyBase.OnKeyPress(e)
If Char.IsDigit(e.KeyChar) Or e.KeyChar = vbBack Or allowDicemal() Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
' 重写Leave事件,变为有效数字
Protected Overrides Sub OnLeave(ByVal e As System.EventArgs)
MyBase.OnLeave(e)
If Trim(Me.Text) = "" Then '如果为空,仍显示空
Me.Text = ""
Else
Me.Text = Val(Me.Text).ToString '不为空,显示有效数字形式。
End If
End Sub
Function allowDicemal() As Boolean
If Trim(Me.Text.Length) = 0 Then '首个字符为“.”无效
Return False
Exit Function
Else '字符串中已有"."无效
Dim chr() As Char
chr = Me.Text.ToCharArray
For i = 0 To Me.Text.Length - 1
If Asc(chr(i)) = 46 Then
Return False
Exit For
Exit Function
End If
Next
End If
Return True
End Function
End Class
编译生成一个DLL文件,(Dll文件的好处我就不说了)。
使用方法:在设计模式窗体中==》右击“工具箱”==》选择“选择项”==》.NetFramework 页面下的“浏览”找到刚生成的DLL文件。这是工具箱上便出现了两个控件,其中一个是UserControl1(这个我还没闹明白),另一个就是NumTextBox控件了。