我是一个业余爱好者加菜鸟,专业理论基础等于零,对编程的感受,大约相当于一个精美的玩具,而这个玩具带给我的可能是一分能以此为乐的寄托,加上因为花费大量时间得来的少许操控感觉吧。今天带来的是制作一个只允许输入有理数(正负数,小数)的文本框TextBox。 这个例子在网上讲过很多次,但因为版本不一样,新手按照原来的资料操作,会遇到很多意想不到的问题,折腾许久也得不到想要的结果,于是就试着操作了一番,顺利通过,现将流程写上来,自己做个日志,也可以让有疑问者参考参考。
环境: VS2017,win10专业版 64位操作系统
1,打开VS2017,新建项目,选择“Windows窗体控件库(.Net FrameWork)”,项目名为 NumText. 项目名可自行定义
2,更改UserControl1.vb文件名为 NumTextBox.vb, 其它按系统默认。
3,打开设计器(双击 NumTextBox.vb),拖入一个TextBox到容器中,控件Name默认为TextBox,放到容器的左上方,然后调整控件和容器的大小和位置,使容器刚好能和TextBox重合,当然这是为了外观美观,如果随便一拖,放到容器里也无所谓。
4,开始写代码.打开代码窗口,给TextBox1的KeyPress事件编码方法TextBox1_KeyPress
Public Class NumTextBox
Private Sub TextBox1_KeyPress(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim tbox = CType(sender, TextBox)
Dim KeyAscii As Integer = Asc(e.KeyChar) '获取用户按下的键
Select Case KeyAscii
Case 48 To 57, 8, 13 '数字0-9,退格,回车
Case 45
If InStr(tbox.Text, "-") <> 0 Then '"-"负号不在第一个位置
KeyAscii = 0
End If
If tbox.SelectionStart <> 0 Then '光标位置
KeyAscii = 0
End If
Case 46
If InStr(tbox.Text, ".") Then '小数点位置不对
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
If KeyAscii = 0 Then
e.Handled = True
Else
e.Handled = False
End If
End Sub
End Class
5,启动调试,即可在obj文件夹下看到NumTextBox.dll
6,在其它项目中引用此dll使用
不当之处,敬请指正。