限制输入和日期控件----学生管理系统之用户体验

来源:互联网 发布:淘宝店铺怎么制作店招 编辑:程序博客网 时间:2024/06/02 01:11
限制输入:
一、数量限制:比如身份证只有13位。
1、text控件属性:MaxLength 输入数字几就限制输入个
2、代码:
Private Sub Text1_Change()
    If Len(Text1) >= 16 Then MsgBox "你已经输入了16个字,已到最大字符数!"
End Sub
二、形式限制:比如身份证可以输入英文字 但手机号不可以。
1、只能输入数字:
If Not IsNumeric(Trim(txtSID.Text)) Then
        MsgBox "请学号输入数字!", vbOKOnly + vbExclamation, "警告"
        txtSID.Text = ""
        txtSID.SetFocus
        Exit Sub
 End If
这里面IsNumeric函数是字符类型判断,只能为数字型。
2、只能输入数字 字母大小写 退格 等
Private Sub txtUserName_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
        Case 48 To 57         '只能输入数字
        Case 65 To 90         '只能输入大写字母
        Case 97 To 122        '只能输入小写字母
        Case 8                '只能输入退格
        Case Else             '否则
            KeyAscii = 0      '输入无效
    End Select
End Sub

在之前第一篇中谈到了键盘事件,其中包含KeyPress事件,他包含一个属性就是KeyAscii 。KeyAscii是键盘输入后传递给程序的ASCII码(如下)


如果没有设置这些的时候,在text文本框里输入了特殊的符号或标点,就会弹出错误,这里面涉及到了一个SQL注入的问题。用自己的语言简单理解SQL注入:就是对于输入的字符验证不够严谨,造成漏洞。防止SQL注入的方法之一就是限制字符输入的形式,如上2点。
3、限制某些字符的情况:
Private Sub txtUserName_KeyPress(KeyAscii as Integer)
Dim a as string
a ="`~!@#$%^&*()_+=-{}|:<>?/.,;'[]\" '表示禁用的字符
if instr(1,a,Chr(KeyAscii))<>0 Then KeyAscii = 0
'这样虽然输入减少了字符影响,但是有一个字符没办法 英文的双引号!所以再添加一句
if KeyAscii = 34 Then KeyAscii = 0 
End Sub  

可以解决上面的问题了。但这还不是最保险的。

三、次数限制:比如银行卡密码输入3次不对则锁定一定时间。
Dim miCount As Integer
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
                OK = True
                mrc.Close
                Me.Hide
                frmMain.Show
                UserName = Trim(txtUserName.Text)
 Else
                miCount = miCount + 1
                If miCount < 3 Then
                    MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
                    txtPassword.SetFocus
                    txtPassword.Text = ""
                Else
                    MsgBox "您多次输入错误,即将退出程序!", vbOKOnly + vbExclamation, "警告
                End If
End If
四、格式限制:比如日期格式。
可以通过代码编入格式进行限制
txtBorndate = Format(txtBorndate, "yyyy-mm-dd")
            If Not IsDate(txtRudate.Text) Then
                MsgBox "入校时间应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
                txtRudate.SetFocus
            Else。。。。。。
但是用户如果不知情,第一次输入错误格式的可能性很大,这样给用户不方便的感觉,所以添加日期控件,这样方便选择日期。下面是设置日期的步骤和代码修改:
第一步:Crtl+T 打开部件找到Microsoft Windows Common Controls-2 6.0 勾选后点击应用。


第二步;设置控件,页面设计,选择如下图的两个控件:


第三步:设置控件名称如:DTPBorndate 和 DTPRudate  一个是出生日期一个是入学日期,这里的出生日期一定是小于入学日期的,有如下代码:

If DTPRudate.Value <= DTPBorndate.Value Then  '判断出生日期是否在入学日期之前

                MsgBox "入学日期不能在出生日期之前!", vbOKOnly + vbExclamation, "警告"
            Else
                DTPBorndate = Format(DTPBorndate, "yyyy-mm-dd")
                DTPRudate = Format(DTPRudate, "yyyy-mm-dd")......

这里简单介绍一下Format 是一种函数,简单介绍他的三个实例用法:

1、Format("my name is%6s"," lanby");  它的返回值是:my name is lanby (这里面的% 6 s 和 ; 都有特定的含义,感兴趣可以自己查查看)

2、Formatdate Time("yyyy",now); 它的返回值是:2017

3、Date = Format(Date,"hh:mm:ss")  它的返回值是:11:09:12

第四步:实现运行的时候点击后才能够出现选择日期的,改变MonthView控件的Visible属性为False。

原创粉丝点击