asp.net TextBox 只能输入数字和小数点

作者:袖梨 2022-06-25

在定制的textbox控件中,如果只允许输入数字,需要考虑如下三种情况:
正常按键输入的字符,包括西文、中文字符等
通过键盘快捷键方式贴入的文本,即ctrl+v操作
通过上下文关联菜单的mouse操作贴入的文本,即”粘贴“操作
在探讨的同类文章中,多数只考虑了第1种情况,忽略得了第2、3种常见的操作
只允许数据小数

private sub text1_keypress(keyascii as integer)

 if keyascii < 48 or keyascii > 57 then
  if keyascii = 46 then
   if text1.text = "" or instr(1, text1.text, ".") <> 0 then
    keyascii = 0
     else
    keyascii = 46
    end if
  else
  keyascii = 0
  end if
  end if
 
end sub


这个加在按钮上

 

private void button1_click(object sender, eventargs e) 
  { 
  //在此加入实现相加的代码 
  //自己加判断语句,限定输入的值是数字,这里就不写了
  int sum = 0;
  int number1 = int.parse(textbox1.text);
  int number2 = int.parse(textbox2.text);
  sum = number1+number2;
  textbox3.text = sum.tostring();
  }

限制textbox只能输入数字和小数点

///
        /// 限制textbox只能输入数字和小数点
        /// 一般在textbox的keypress中调用
        ///

        ///
        ///
        public static void textbox_keypress(object sender, keypresseventargs e)
        {
            if (!(((e.keychar >= '0') && (e.keychar <= '9')) || e.keychar <= 31))
            {
                if (e.keychar == '.')
                {
                    if (((textbox)sender).text.trim().indexof('.') > -1)
                        e.handled = true;
                }
                else
                    e.handled = true;
            }
            else
            {
                if (e.keychar <= 31)
                {
                    e.handled = false;
                }
            }
        }

textbox控件输入的事前处理模式,即在输入字符的同时屏蔽非数字键。在实际应用中一般采取事后处理模式,即在textbox控件的exit、validate等事件中进行输入后处理——离开该控时进行验证。但事后处理模式有如下不足:
与数据源绑定时输入非数字字符可能抛出异常,需要考虑异常捕获
需要判断数据并给出错误提示等处理

相关文章

精彩推荐