以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  身份证号码输入  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=118707)

--  作者:良才
--  发布时间:2018/5/9 10:57:00
--  身份证号码输入
TextBox(文本框)KeyPress里,前17位只能输入数值,第8位可以输入数值或大写字母。请问老师可以做到吗?
If Char.IsNumber(e.KeyChar) OrElse Char.IsUpper(e.KeyChar) Then

Else
    e.Cancel  = True
End If
[此贴子已经被作者于2018/5/9 10:57:32编辑过]

--  作者:有点甜
--  发布时间:2018/5/9 11:03:00
--  

可以用掩码

 

http://www.foxtable.com/webhelp/scr/3100.htm

 

或者代码

 

If Char.IsNumber(e.KeyChar) OrElse Char.IsUpper(e.KeyChar) Then
    If e.sender.Text.Length <= 17 andAlso Char.IsNumber(e.KeyChar) = false Then

        e.cancel = true

    End If

Else
    e.Cancel  = True
End If

--  作者:良才
--  发布时间:2018/5/9 11:32:00
--  
这样前17位值可以输,第18位不能输字母,如果第18位输数值,就删除不了。
[此贴子已经被作者于2018/5/9 11:32:48编辑过]

--  作者:有点甜
--  发布时间:2018/5/9 11:44:00
--  

If Char.IsNumber(e.KeyChar) Then
    If e.sender.Text.Length > 17 Then
        e.cancel = True
    End If
ElseIf e.keychar = chr(keys.back) Then

ElseIf Char.IsUpper(e.keychar) Then
    If e.sender.Text.Length < 17 Then
        e.cancel = True
    End If
Else
    e.Cancel  = True
End If


--  作者:良才
--  发布时间:2018/5/9 11:52:00
--  
谢谢!老师
--  作者:良才
--  发布时间:2018/5/9 13:28:00
--  
老师,还有学籍输入框,字符数19位,第1位是“G”或“L”,中间17位数值,第19位是数值或“X”,下面代码最后如果是数值可以,是“X”就不行了,请老师指教,谢谢!
If e.keychar = "G" Or e.keychar = "L" OrElse Char.IsNumber(e.KeyChar) Then
    If e.sender.Text.Length > 18 Then
        e.cancel = True
    End If
ElseIf e.keychar = chr(keys.back) Then
ElseIf e.keychar = "X" Then
    If e.sender.Text.Length < 18 Then
        e.cancel = True
    End If
Else
    e.Cancel  = True
End If
[此贴子已经被作者于2018/5/9 13:31:15编辑过]

--  作者:有点甜
--  发布时间:2018/5/9 14:46:00
--  
If  Char.IsNumber(e.KeyChar) Then
    If e.sender.text.length < 1 OrElse e.sender.Text.Length > 18 Then
        e.cancel = True
    End If
ElseIf e.keychar = "G" OrElse e.keychar = "L" Then
    If e.sender.Text.Length >= 1 Then
        e.cancel = True
    End If
ElseIf e.keychar = chr(keys.back) Then
ElseIf e.keychar = "X" Then
    If e.sender.Text.Length < 18 OrElse e.sender.text.length > 18 Then
        e.cancel = True
    End If
Else
    e.Cancel  = True
End If

--  作者:良才
--  发布时间:2018/5/10 9:17:00
--  
谢谢