[问题] TextBox只允许输入数字及负号

楼主: unfun (不好玩)   2014-03-27 10:30:36
private void endSpeed_KeyPress(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 (endSpeed.Text.LastIndexOf('.') != -1)
{
e.Handled = true;
}
if (e.KeyChar == '-')
{
if (this.endSpeed.Text.Length > 0)
e.Handled = true;
}
}
}
目前小弟在网络上搜寻只输入数字的方法,
东拼西凑之下完成了一个堪用的过滤方式。
其主要的逻辑为
1.先筛选掉非数字浮号的字符
2.小数点只能有一个
3.负号只能在第一位
但现在有个问题了,有几个方法无法使用
1.当textbox.text内已经有小数点,无法反白(全选)后输入'.'
2.当textbox.text内有内容,无法反白(全选)后输入'-'
总而言之我的过滤方式无法排除全选后输入这种方法,是否有更好的处理方式。
作者: Eleganse (艾勒更斯)   2014-03-27 10:47:00
没写过 感觉上可以考虑用正规表示式写在网页客端js码完成textbox这个控件和前端码及后端码都很容易操控到
作者: pkmu8426 (巴426)   2014-03-27 11:26:00
我的话会采用 触发事件 事件中每一次都重新针对textbox中的文字进行整行判断
作者: GoalBased (Artificail Intelligence)   2014-03-27 12:26:00
写js吧
作者: talenttb (CC)   2014-03-27 13:07:00
client js keydown 限制 server regular 检查
作者: umi8422 (快被烤焦ㄉ鱼)   2014-03-28 20:48:00
套jquery.validate程式都不用写
作者: VVll (李奥纳多皮卡丘)   2014-04-01 04:39:00
if(!double.TryParse(input, out d)) error;

Links booklink

Contact Us: admin [ a t ] ucptt.com