在定制的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等事件中进行输入后处理——离开该控时进行验证。但事后处理模式有如下不足:
与数据源绑定时输入非数字字符可能抛出异常,需要考虑异常捕获
需要判断数据并给出错误提示等处理