none
TextBox验证输入问题 RRS feed

  • 问题

  • private static void ValidatorNum(object sender, KeyPressEventArgs e)
            {
                if (!Char.IsNumber(e.KeyChar) && !Char.IsPunctuation(e.KeyChar) && !Char.IsControl(e.KeyChar))
                {
                    e.Handled = true;
                }
                else if (Char.IsPunctuation(e.KeyChar))
                {
                    if (((TextBox)sender).Text.LastIndexOf('.') != -1)
                    {
                        e.Handled = true;
                    }
                }
            }
    这是我代码,问题是;‘-*/和shift+数字键也都能输出出来。
    2012年3月13日 3:30

答案

  • dear

    這樣是你要的嗎

                if (Char.IsNumber(e.KeyChar) || Char.IsPunctuation(e.KeyChar) || Char.IsControl(e.KeyChar))
                {
                    e.Handled = true;
                }
                if (Char.IsPunctuation(e.KeyChar))
                {
                    if (((TextBox)sender).Text.LastIndexOf('.') != -1)
                    {
                        e.Handled = true;
                    }
                }


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    • 已建议为答案 Neddy Ren 2012年3月14日 8:36
    • 已标记为答案 Neddy Ren 2012年3月28日 5:36
    2012年3月13日 7:39

全部回复

  • dear

    這樣是你要的嗎

                if (Char.IsNumber(e.KeyChar) || Char.IsPunctuation(e.KeyChar) || Char.IsControl(e.KeyChar))
                {
                    e.Handled = true;
                }
                if (Char.IsPunctuation(e.KeyChar))
                {
                    if (((TextBox)sender).Text.LastIndexOf('.') != -1)
                    {
                        e.Handled = true;
                    }
                }


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    • 已建议为答案 Neddy Ren 2012年3月14日 8:36
    • 已标记为答案 Neddy Ren 2012年3月28日 5:36
    2012年3月13日 7:39
  • 请问楼主,你只要TextBox输入数字吗?如果是这样的话,那么请:

    1)使用Double.TryParse或者Parse,外加判断或者是try……catch方法设置e.Handled,从而防止非法数字输入。

    2)使用正则表达式:

    例如:

    Regex reg = new Regex("^\\d+[.]\\d+"$);
    e.Handled = !reg.Match(TextBox.Text).Success;

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月13日 8:10
    版主