日常開發過程中,驗證字元的合法性一直是一個必不可少的步驟,以前都是在用戶輸入完再做判斷,不僅麻煩在不符合標準的時候還要提示用戶修改,體驗很差,為什麼不在輸入的時候加以限制呢? ...
日常開發過程中,驗證字元的合法性一直是一個必不可少的步驟,以前都是在用戶輸入完再做判斷,不僅麻煩在不符合標準的時候還要提示用戶修改,體驗很差,為什麼不在輸入的時候加以限制呢?
以 Winform
的TextBox
控制項為例,這裡提供兩種方案:
- 通過字元匹配
- 正則表達式
在用戶輸入時限制,所以選用KeyPress
事件。
字元匹配
private void txt_Address_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
// 只允許輸入字母和數字
if (!char.IsLetterOrDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != '\b')
{
e.Handled = true;
}
// 限制輸入長度為8位
if (txt_Address.Text.Length >= 8 && !char.IsControl(e.KeyChar))
{
e.Handled = true;
}
}
以上代碼使用了TextBox
的KeyPress
事件處理程式。在該事件中,使用char.IsLetterOrDigit
方法來判斷輸入的字元是否是字母或數字,如果不是,則將其處理掉,不允許輸入。同時,使用char.IsControl
方法來判斷輸入的字元是否是控制字元,如退格鍵、刪除鍵等,這些特殊按鍵是允許輸入的。另外,使用TextBox
的Text
屬性來獲取輸入框中的文本長度,如果長度超過 8 位並且輸入的字元不是控制字元,也將其處理掉,不允許輸入超過 8 位的字元。
測試過程中發現這樣判斷有一個缺陷就是中文還是能輸進去