首页 新闻 会员 周边

自己写了一个在TextBox禁止输入特殊字符的keyPress事件,却不能禁止\符号的输入?

0
[已解决问题] 解决于 2009-03-24 12:48

   private void txtServerName_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ("\\(?!.*?[\'\"!@#$%//^&*~,.\\])`=+-{}:;_/|<>".IndexOf(e.KeyChar)>0)
            {
                e.Handled = true;
            }
        }

tangtang的主页 tangtang | 初学一级 | 园豆:0
提问于:2009-03-06 09:38
< >
分享
最佳答案
0

晕,害我也弄半天,我还奇怪了

后面表达式要写成大于-1才可以,\在第一个索引=0,所以可以输入

PS:不知道为什么上面表达式要写那么 多重复的,比如*、\、.

天好高 | 菜鸟二级 |园豆:230 | 2009-03-06 10:30
其他回答(6)
0

用正则表达式吧

阿水 | 园豆:506 (小虾三级) | 2009-03-06 09:57
0

天好高说的应该没错,为什么不用转义字符@呢?

| 园豆:770 (小虾三级) | 2009-03-06 11:55
0

\杠是正则的转义符号

同时也是一些语言的转义符号

如果我要在正则里匹配\

[\\]就应该这样写

但是如果我要吧javascript里的string斜杠传到正则里

就要写[\\\\]因为在javascript里还要转义一遍

所以你吧

 if ("\\(?!.*?[\'\"!@#$%//^&*~,.\\\\])`=+-{}:;_/|<>".IndexOf(e.KeyChar)>0)

上面2个\\的位置写成4个斜杠试试 

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2009-03-06 12:03
0

用正则表达式来限定就可以了。

关键字:System.Text.RegularExpressions

去搜一下。

尚祚彦 | 园豆:210 (菜鸟二级) | 2009-03-06 14:33
0

为什么总是喜欢用IndexOf而不用Contains呢,JS带来的惯性?

Gray Zhang | 园豆:17610 (专家六级) | 2009-03-06 21:25
0

用正则嘛

Assion Yang | 园豆:232 (菜鸟二级) | 2009-03-11 18:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册