c# textbox 只能 输入数字,退格,小数点。如何实现

解决方案 »

  1.   


     private void NumberAccpter(object sender, KeyPressEventArgs e)
            {
                int keyValue = (int)e.KeyChar;
                if ((keyValue >= 48 && keyValue <= 57) || keyValue == 8 || keyValue == 46)
                {
                    if (sender != null && sender is TextBox && keyValue == 46)
                    {
                        if (((TextBox)sender).Text.IndexOf(".") >= 0)
                            e.Handled = true;
                        else
                            e.Handled = false;
                    }
                    else
                        e.Handled = false;
                }
                else
                    e.Handled = true;
            }
      

  2.   

            private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if ((e.KeyChar < '0' && e.KeyChar != '.' || e.KeyChar > '9' && e.KeyChar != '.' || ((TextBox)(sender)).Text.IndexOf('.') >= 0 && e.KeyChar == '.') && e.KeyChar != (char)13 && e.KeyChar != (char)8)
                {
                    e.Handled = true;
                }
            }
      

  3.   

    [ToolboxData("<{0}:NumberBox runat=server></{0}:NumberBox>"), DefaultProperty("Text")]
    public class NumberBox : TextBox
    {
        // Methods
        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {
            base.AddAttributesToRender(writer);
            writer.AddAttribute("OnKeyDown", "NumberKey()");
        }    protected override void OnLoad(EventArgs e)
        {
            if (!this.Page.IsClientScriptBlockRegistered("NumberBoxScript"))
            {
                this.Page.RegisterClientScriptBlock("NumberBoxScript", this.RenderScript());
            }
            base.OnLoad(e);
        }    protected override void Render(HtmlTextWriter output)
        {
            base.Render(output);
        }    private string RenderScript()
        {
            string str = "";
            return (((((str + "\n<script language=\"javascript\"> \n") + "function NumberKey() \n" + "{ \n") + "\tif(!( (event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)||(event.keyCode==8||event.keyCode==110||event.keyCode==190||event.keyCode==37||event.keyCode==39) )) \n" + "\t{ \n") + "\t\tevent.returnValue = false; \n" + "\t} \n") + "} \n" + "</script> \n");
        }
    }
      

  4.   


      private   void   textBox1_KeyPress(object   sender,   System.Windows.Forms.KeyPressEventArgs   e)   
      {   
      //限制只能输入字母和数字   
        if(!((e.KeyChar   >=   '0'   &&   e.KeyChar   <=   '9') || e.KeyChar == '.' ||((int)e.KeyChar   ==   (int)System.Windows.Forms.Keys.Back)))   
      {   
        e.Handled   =   true;   
      }   
      }   
      

  5.   

    private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
            {
                //检测是否已经输入了小数点
                bool IsContainsDot = this.textBox2 .Text.Contains(".");
                if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8) && (e.KeyChar != 46))
                {
                    e.Handled = true;
                }
                else if (IsContainsDot && (e.KeyChar == 46)) //如果输入了小数点,并且再次输入
                {
                    e.Handled = true;
                }
         
            }
      

  6.   


    private bool IsAllNumber(string text)
            {
                Regex objNotNumberPattern = new Regex("[^0-9.-]");
                Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
                Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
                String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
                String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
                Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
                return !objNotNumberPattern.IsMatch(text) && !objTwoDotPattern.IsMatch(text) && !objTwoMinusPattern.IsMatch(text) && objNumberPattern.IsMatch(text);
            }
      

  7.   

    textbox_keypress(eventargs e)
    if(e.keychar>?? ||e.keychar<??  ||e.keychar==??||e.keychar==??)
    {do what you want to do}
    else
    e.handle=true;