以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  限制中文输入  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=43789)

--  作者:xvkewen
--  发布时间:2013/12/15 15:45:00
--  限制中文输入
我想SRS列里只能输入字母,数字和符号"-",当我直接输入中文的时候可以得到提示,但当我中英文混输的时候,却没有提示且被正常录入了,为什么?validateEdit事件的代码如下:

If e.Col.name = "SRS_No" Then
    Dim s2 As String = e.text
    If s2 <> "" Then
        If Asc(s2) > 47 And Asc(s2) < 58 OrElse Asc(s2) > 64 And Asc(s2) < 91 OrElse Asc(s2) > 96 And Asc(s2) < 123 OrElse Asc(s2) = 45 Then
            e.Cancel = False
        Else
            msgbox("您输入的办单号含有非法字符,请重新输入!" & Chr(13) & Chr(10) & "办单号只能包含字母,数字和符号""-""")
            e.Cancel = True
        End If
    End If
End If

--  作者:lsy
--  发布时间:2013/12/15 16:11:00
--  

做文本文件数据对齐的时候,我用的判断是:

If  Asc(s2) < 0 Then    \'汉字或全角字符。

 

End If


--  作者:有点甜
--  发布时间:2013/12/15 19:41:00
--  
 方法一:把代码设置到datacolchanged里,相应的改一下代码便可。

 方法二:设置列的掩码。http://www.foxtable.com/help/topics/0047.htm

--  作者:xvkewen
--  发布时间:2013/12/15 20:21:00
--  
我是for each对输入的字符逐个判断,是不是笨了点?
--  作者:有点甜
--  发布时间:2013/12/15 20:45:00
--  
 validateEdit 或者 datacolchanged,就是要fox each去一个一个判断的。

 你或者可以用正则表达式去判断。

 如果每输入一个,就检测一下的话,建议用keypressEdit去判断。

--  作者:有点甜
--  发布时间:2013/12/15 20:49:00
--  
 正则的用法

Dim data As String = "13AA343"
Dim reg As new System.Text.RegularExpressions.Regex("^[0-9a-zA-Z]+$")
Dim result As Boolean = reg.IsMatch(data)
msgbox(result)