在winForm程序中,如何控制textbox只能输入数字不要在text_change事件中写的那种效果想要控制在textbox输入的时候,就只能输数字进去输汉字和字母都输不进去

解决方案 »

  1.   

    <input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
      

  2.   

    private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 

    if(e.KeyChar>='0'&&e.KeyChar<='9') 
    e.Handled=false; 
    else 
    e.Handled=true;
    }
      

  3.   

    用正则,或者ascII判断一下就是了。
      

  4.   


    if (e.KeyChar != '\b' && e.KeyChar != '\n')
                {
                    if (e.KeyChar < '0' || e.KeyChar > '9')
                    {
                        e.Handled = true;
                    }
                    else
                    {
                        e.Handled = false;
                    }
                }
      

  5.   


    按照您的方法做过限制的textbox,同样可以输入字母,汉字等等..
      

  6.   


    string RegexText = @"^-?[1-9]\d*$";
     regex = new Regex(RegexText);
     if(!regex.IsMatch(e.KeyChar))
    e.Handled=true;
      

  7.   

    这个没有问题:
    string RegexText = @"^-?[1-9]\d*$";
     regex = new Regex(RegexText);
     if(!regex.IsMatch(e.KeyChar))
    e.Handled=true;
      

  8.   


     private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar >= '0' && e.KeyChar <= '9')
                    e.Handled = false;
                else
                    e.Handled = true;         }
      

  9.   

    private void txtZW_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    // if (!(Char.IsNumber(e.KeyChar)||e.KeyChar==8)) //||   e.KeyChar   ==   '.'     
    // {   
    // e.Handled=true;   
    // }
    if(e.KeyChar>='0'&&e.KeyChar <='9')
    {
    e.Handled = true;
    }
    }
      

  10.   

    private void txtZW_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    // if (!(Char.IsNumber(e.KeyChar)||e.KeyChar==8)) //||   e.KeyChar   ==   '.'     
    // {   
    // e.Handled=true;   
    // }
    if(e.KeyChar>='0'&&e.KeyChar <='9')
    {
    e.Handled = false;
    }
    else
    {
    e.Handled = true;
    }
    }这两种都不行
      

  11.   

    private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 

    if(e.KeyChar>='0'&&e.KeyChar <='9') 
    e.Handled=false; 
    else 
    e.Handled=true; 

    完全OK!为 控件添加 KeyPress 事件,调用!
      

  12.   

    各位,我写在textBox1_KeyPress中,你们试试,刚开始是能够满足要求的,但是你们将光标移到其他控件,然后再移回来,然后输入字母和汉字都可以,或者切换个输入法,再次输入汉字或者字母也都是可以的
      

  13.   


    可是我刚才试了,就是不行啊,放在keyPress事件里,第一次能够达到要求,只可以输入数字,但之后切换就不行了,就可以输入汉字和字母了,还有regex需要引用什么命名空间呢
      

  14.   

    奇怪 这应该和版本没关系
    using   System.Text.RegularExpressions;
      

  15.   

    参考://TextBox只输入字母private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
    //只有字母及控制键有效
    if (!Char.IsLetter(e.KeyChar) && !Char.IsControl(e.KeyChar))
    {
    e.KeyChar = '\0';
    }
    }private void textBox1_Enter(object sender, EventArgs e)
    {
    textBox1.ImeMode = ImeMode.Disable;//确保只输入英文
      

  16.   

    C# codeif (e.KeyChar!='\b'&& e.KeyChar!='\n') 
                {if (e.KeyChar <'0'|| e.KeyChar>'9') 
                    { 
                        e.Handled=true; 
                    }else 
                    { 
                        e.Handled=false; 
                    } 
                } 
    这样写法可以是可以,但是如果用ctrl+v粘贴到textbox中同样能输入其他字符的,最好再用leave事件控制下比较严谨
      

  17.   

    string RegexText = @"^-?[1-9]\d*$";
    regex = new Regex(RegexText);
    if(!regex.IsMatch(e.KeyChar))
    e.Handled=true;
      

  18.   

    我不明白你为什么不直接使用 NumericUpDown 控件呢?
      

  19.   


    private void Form2_Load(object sender, EventArgs e)
            {            textBox1.ContextMenu = new ContextMenu();            textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
           
            }        void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if ((int)e.KeyChar == 22)
                {
                    e.Handled = true;
                }
            } 
      

  20.   

    那就加上输入法判断试试
    KeyPress事件
    //不是美式输入法
    if(InputLanguage.CurrentInputLanguage != InputLanguage.DefaultInputLanguage)
    {
         InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage;
    }
      

  21.   

    using System.Runtime.InteropServices;
      

  22.   


            private void textbox_Leave(object sender, EventArgs e)
            {          
                TextBox txt = (TextBox)sender;
                Regex Reg = new Regex(@"^(?:(?:[01]\d)|(?:2[0-3]))[0-5]\d$");
                if (!Reg.IsMatch(txt.Text) && txt.Text.Length > 0)
                {
                    MessageBox.Show(txt.Tag + "格式输入错误!");
                    txt.Focus();
                }
            }
      

  23.   

    ls mm头像好像是本人 不错
      

  24.   

    //只能输入数字
    private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    if(e.KeyChar>='0' && e.KeyChar<='9')
    {
    e.Handled=false;
    }
    else{
    e.Handled=true;
    }
    } //禁止输入法
    private void textBox1_Enter(object sender, System.EventArgs e)
    {
    textBox1.ImeMode= ImeMode.Disable;
    } //如果复制的内容不是纯数字,清除内容
    private void textBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if (e.Button == MouseButtons.Right){
    try
    {
    System.Int64.Parse("" + Clipboard.GetDataObject().GetData(DataFormats.Text));
    }
    catch(System.FormatException ex){
    Clipboard.SetDataObject("");
    }
    }
    }
      

  25.   


    也写在KetPress事件里么 ?
      

  26.   


            /// <summary>
            /// 判断只能输入数字
            /// </summary>
            /// <param name="strValue">用户输入的值</param>
            /// <returns>非数字:FALSE;数字:TRUE</returns>
            public bool isNumeric(string strValue)
            {
                System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[-]?\d+[.]?\d*$");
                return reg1.IsMatch(strValue);
            }
      

  27.   

    protected override void OnKeyPress(KeyPressEventArgs e)
            {
                switch (emtype)
                {
                    case _EmType.Int:                  
                        if (!char.IsDigit(e.KeyChar)&&e.KeyChar != '\b') 
                        {
                            e.Handled = true;                       
                        }
                        break;
                    case _EmType.Decimal:
                        if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b'&&e.KeyChar!='-'&&e.KeyChar!='.')
                        {
                            e.Handled = true;
                        }
                        else if (this.Text.Split('.').Length == 2 && e.KeyChar == '.') 
                        {
                            e.Handled = true;
                        }
                        else if(this.Text.Split('-').Length == 2 && e.KeyChar == '-')
                        {
                            e.Handled = true;
                        }
                        break;
                }
               
                base.OnKeyPress(e);
            }
      

  28.   

    emtype自定义属性int或者Decimal类型protected override void OnKeyPress(KeyPressEventArgs e) 
            { 
                switch (emtype) 
                { 
                    case "Int":                  
                        if (!char.IsDigit(e.KeyChar)&&e.KeyChar != '\b') 
                        { 
                            e.Handled = true;                      
                        } 
                        break; 
                    case "Decimal": 
                        if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b'&&e.KeyChar!='-'&&e.KeyChar!='.') 
                        { 
                            e.Handled = true; 
                        } 
                        else if (this.Text.Split('.').Length == 2 && e.KeyChar == '.') 
                        { 
                            e.Handled = true; 
                        } 
                        else if(this.Text.Split('-').Length == 2 && e.KeyChar == '-') 
                        { 
                            e.Handled = true; 
                        } 
                        break; 
                } 
              
                base.OnKeyPress(e); 
            }
      

  29.   

    靠真有傻帽,已经说了是winforms了还用js,真傻帽呀
      

  30.   

    搞这么复杂干吗???
    用maskedTextBox
    设Mask 为99999999999就好了
      

  31.   

    两个组合使用,可以设置公式;你的要求只使用一个就可以了。
    private void txtNum_KeyPress(object sender, KeyPressEventArgs e)
            {            if ((e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar == '\b') || (e.KeyChar == '.'))
                {
                    e.Handled = false;    // 允许输入
                    int pos = txtNum.SelectionStart;
                    int intLength = txtNum.Text.Length;                if ((intLength == txtNum.MaxLength) && (pos < txtNum.MaxLength))
                    {
                        txtNum.SelectionLength = 1;
                        if ((txtNum.SelectedText == ".") && (e.KeyChar != '.'))
                        {
                            ++txtNum.SelectionStart;
                        }                }                if ((e.KeyChar == '.') && (txtNum.Text.IndexOf('.') > -1))
                    {
                        e.Handled = true;
                        if ((pos < intLength - 1) && (txtNum.Text.Substring(pos, 1) == "."))
                        {
                            txtNum.SelectionStart = ++pos;
                        }
                    }                if ((decimalLength == 0) && (e.KeyChar == '.'))    // 如果是保留零位小数﹐则不允许输入点号
                    {
                        e.Handled = true;
                    }
                }
                else
                {
                    MessageBox.Show("只能输入数字", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    e.Handled = true;
                }
            }        private void txtNum_KeyUp(object sender, KeyEventArgs e)
            {
                int pos = txtNum.SelectionStart;
                string strValue = txtNum.Text.Trim();            if (decimalLength == 0)
                {  // 当文本框中只输入整数时               
                    while (strValue.Substring(0, 1) == "0")
                    {  // 去除整数部份最前右侧的
                        if (strValue.Length > 1)
                        {
                            strValue = strValue.Substring(1, strValue.Length - 1);
                            if (pos > 0)
                            {
                                --pos;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                    txtNum.Text = strValue;
                }
                else
                {  // 当文本框用于输入小数时
                    int pointPs = strValue.IndexOf('.');
                    if (pointPs < 0)
                    {
                        strValue += ".".PadRight(decimalLength, '0');
                    }
                    if (pointPs == 0)
                    {
                        strValue = "0" + strValue;
                        txtNum.SelectionStart = ++pos;
                    }                // 自动使其保留两位小数
                    string[] strs = strValue.Split(new char[] { '.' });
                    strs[0] = strs[0].Length > 0 ? strs[0] : "0";                // 去除整数部份最前右侧的
                    while (strs[0].Substring(0, 1) == "0")
                    {
                        if (strs[0].Length > 1)
                        {
                            strs[0] = strs[0].Substring(1, strs[0].Length - 1);
                            if (pos > 0)
                            {
                                --pos;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }                // 取得小数字数的数字,如果不足小数字长度﹐则以填补
                    if (strs[1].Length < decimalLength)
                    {
                        strs[1] = strs[1].PadRight(decimalLength, '0');
                    }
                    txtNum.Text = strs[0] + "." + strs[1];
                }
                txtNum.SelectionStart = pos;            try
                {
                    //txtAllMoney.Text = Convert.ToString(Convert.ToDecimal(txtMoney1.Text) + Convert.ToDecimal(txtMoney2.Text) + Convert.ToDecimal(txtMoney3.Text));
                }
                catch
                {
                    MessageBox.Show("输入数字不是有效数字", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    e.Handled = true;
                }        }
      

  32.   

    private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    if(e.KeyChar>='0'&&e.KeyChar <='9')
    e.Handled=false;
    else
    e.Handled=true;
      

  33.   

    TextBox.ImeMode=ImeMode.Number;这个估计可以吧
      

  34.   

    怎么控制dataGrid只能选择一行 ?
      

  35.   

    dataGrid有个多行选择的属性,设定就好了
      

  36.   

    怎么控制dataGrid只能选择一行 ?
      

  37.   


    不好意思,我一直用LISTVIEW,也以為你用的這個
      

  38.   

    用MaskTextBox控件啊 现成的
      

  39.   

    <asp:textbox onkeypress="isnum()" id="TextBox1" runat="server"></asp:textbox> 在页面中添加一段脚本:
    <script language="javascript">
        function isnum()
        {
            if(event.keyCode<45 || event.keyCode>57)
            {
                event.keyCode=0;
            }
        }                             
    </script>
      

  40.   

    用MaskTextBox控件啊 现成的 
      

  41.   

     private void txtDelKey_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (!(char.IsDigit(e.KeyChar) || e.KeyChar == '\b'))
                {
                    e.Handled = true;
                }
            }