首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#中TextBox控件只允许输入数目字的代码

2013-08-10 
C#中TextBox控件只允许输入数字的代码C#项目中接触了TextBox只允许输入数字的问题,这倒不难,如下:private

C#中TextBox控件只允许输入数字的代码
C#项目中接触了TextBox只允许输入数字的问题,这倒不难,如下:
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

       e.Handled = e.KeyChar < '0' || e.KeyChar > '9';  //允许输入数字
       if(e.KeyChar==(char)8)  //允许输入回退键
       {   
             e.Handled=false;
       }
}
但是如果要输入小数点,做成象 计算器的那样,可真难了我几天,网上搜索了半天也没答案,
还是自己写吧,效果不错(高手不要笑我,没什么难度,只是自己的一点小经验),
有 兴趣的朋友可以看看:
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
      string str=this.textBox1.Text;
      e.Handled = e.KeyChar < '0' || e.KeyChar > '9';  //允许输入数字
      if(e.KeyChar==(char)8)  //允许输入回退键
      { 
            e.Handled=false;
      }
      if(e.KeyChar==(char)46)  
      {
            if(str=="")  //第一个不允许输入小数点
            {
                  e.Handled=true;
                  return;
            }
            else
            { //小数点不允许出现2次
                  foreach(char ch in str)
                  {
                         if(char.IsPunctuation(ch))
                         {
                               e.Handled=true;


                               return;
                         }
                  }
                  e.Handled=false;
             }
       }



看大家还有什么好的办法解决小数位点的问题
C# 控件
[解决办法]

 //小数点按钮被点击的时候 触发的事件
            if (first != "")
            {//如果当前的得到字符 first不为空
                string[] n = first.Split('.');
                //用‘.’分割字符 first 得到的字符等于1说明 该字符中已存在小数点
                if (n.Length == 1)
                {
                    //设置小数点按钮不可用
                    btnd.Enabled = false;
                }
                first += ".";
                txtResult.Text = first;
            }
            //如果当前字符为空 


            if (first == "")
            {
                //默认添加字符 "0."
                first = "0.";
                txtResult.Text = first;
                btnd.Enabled = false;
            }


first是个string类型
[解决办法]
<form>
<input id="b1" type="text" value="" onblur="press()">
<script>
 var str="0123456789";
 function press()
 {
  var str1=document.all.b1.value;
  if (str.indexOf(str1)!=-1)
  {
   return true; 
  }
  else
  {
   alert("只能输入数字!");
   document.all.b1.value="";
   return false;
  }
 }
</script>
</form>
[解决办法]
随手写了一个,目测比楼主的简单

[解决办法]
引用:
随手写了一个,目测比楼主的简单

//多么的简单
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    string inputText = textBox1.Text + e.KeyChar;


    e.Handled = char.IsPunctuation(inputText[0]) ? true :
               !Regex.IsMatch(inputText, @"^[-+]?\d*\.?\d*$");
}
//防止Copy & Paste
private void textBox1_TextChanged(object sender, EventArgs e)
{
    textBox1.Text = !Regex.IsMatch(
                     textBox1.Text, @"^[-+]?\d*\.?\d*$") ? "0.0" : textBox1.Text;
}


C#中TextBox控件只允许输入数目字的代码


C#中TextBox控件只允许输入数目字的代码
[解决办法]
      string modiles = "^[0-9]*$";
            Regex rmodile = new Regex(modiles);
if (!rmodile.IsMatch(this.TxtARSetting.Text))
            {
                MessageBox.Show("只能是数字");
                this.TxtARSetting.Focus();
            }
[解决办法]
在事件 keypress 中写
---------------------------------只能输入数字------------------------------------

 

 

if (e.KeyChar < '0' 
[解决办法]
 e.KeyChar > '9' && e.KeyChar != (char)13 && e.KeyChar != (char)8)
            {
                e.Handled = true;
            }

 

 

 

--------------------------------只能输入数字,并且只能有一个小数点------------------------------

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;
            }


[解决办法]

            //只能输入整型
            if (!(Char.IsNumber(e.KeyChar) 
[解决办法]
 e.KeyChar == '\b'))
            {
                e.Handled = true;
                return;
            }
           //浮点类型
            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;
//keydown的复制粘贴
        /// <summary>
        /// 验证类型
        /// </summary>
        public enum VType 
        { 
            /// <summary>
            /// 整型
            /// </summary>
            Int,
            /// <summary>
            /// 字符串类型
            /// </summary>
            String,
            /// <summary>
            /// 浮点类型
            /// </summary>
            Decimal
        }
        public static void KeyDown(object sender, KeyEventArgs e,VType vtype)
        {
            if ((e.Control) && (e.KeyCode == System.Windows.Forms.Keys.C 
[解决办法]
 e.KeyCode == System.Windows.Forms.Keys.V))
            {
                string r = "";
                TextBox tb = (TextBox)sender;
                if (vtype == VType.Int)


                    r = @"^[0-9]+$";
                if (vtype == VType.Decimal)
                    r = @"^[0-9]+\.[0-9]+
[解决办法]
[0-9]+$";
                if (e.KeyCode == System.Windows.Forms.Keys.V)
                {
                    Regex reg = new Regex(r);
                    if (reg.IsMatch(Clipboard.GetText()))
                        tb.Text = Clipboard.GetText();
                }
                else if (e.KeyCode == System.Windows.Forms.Keys.C)
                {
                    Clipboard.SetText(tb.Text);
                }
            }
        }

热点排行