在定製的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只能輸入數字和小數點
/// <summary>
/// 限制textbox只能輸入數字和小數點
/// 一般在textbox的keypress中調用
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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等事件中進行輸入後處理——離開該控時進行驗證。但事後處理模式有如下不足:
與資料來源綁定時輸入非數字字元可能拋出異常,需要考慮異常捕獲
需要判斷資料並給出錯誤提示等處理