WinForm的TextBox中只能數字與字母而不能輸入其他字符
有些情況下,在開發WinForm的時候希望TextBox中只能數字而不能輸入其他字符,其實還是比較容易做到的,可能方法很多,下面說說我個人的一種方法。
首先先把代碼貼出來:
- private void txtNumber_KeyPress(object sender, KeyPressEventArgs e)
- {
- if (char.IsDigit(e.KeyChar)||((int)e.KeyChar)==8)//8為Backspac所對應的ascii
- {
- //表示:該事件尚未處理,事件會繼續處理
- e.Handled = false;
- }
- else
- {
- //表示:該事件已經處理過了,事件就不會在響應去處理了
- e.Handled = true;
- MessageBox.Show("請輸入數字!");
- }
- }
然后再來解釋下:首先是創建一個對TextBox(txtNumber) 增加一個KeyPress事件響應,當每按完一個鍵盤鍵時將響應該事件。
然后再通過char.IsDigit來判斷鍵入的字符是否為數字,如果是,則設置e.Handled為false,即數字可以輸入到TextBox中,當然當按下Backspace時 要響應刪除事件,不然輸入錯了可刪除不了了哦!
好吧,大概流程就是這樣了!
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)//文本框只接受數字的輸入和小數點
{
//IsNumber:指定字符串中位于指定位置的字符是否屬于數字類別
//IsPunctuation:指定字符串中位于指定位置的字符是否屬于標點符號類別
//IsControl:指定字符串中位于指定位置的字符是否屬于控制字符類別
if (!Char.IsNumber(e.KeyChar) && !Char.IsPunctuation(e.KeyChar) && !Char.IsControl(e.KeyChar))
{
e.Handled = true; //獲取或設置一個值,指示是否處理過System.Windows.Forms.Control.KeyPress事件
}
else if (Char.IsPunctuation(e.KeyChar))
{
if (e.KeyChar == '.')
{
if (((TextBox)sender).Text.LastIndexOf('.') != -1)
{
e.Handled = true;
}
}
else
{
e.Handled = true;
}
}
}
首先,先定義一個string,用來表示數字的正則表達式:

然后再定義一個string,用來記錄TextBox原來的內容,以便在輸入非數字的時候,文本框的內容可以恢復到原來的值(我不知道TextBox怎么恢復到上一次的內容,只能采用這個笨辦法了):

接著,我們就可以在textBox的TextChanged事件中判斷輸入的是否是數字,如果是數字,那么就把文本框的內容保存在param1中;如果不是數字,那么取消這次輸入,即重新設置文本框的內容為param1:
















這樣,就基本上實現了用正則表達式限制TextBox的輸入數字了。
其他的現在也是類似,只要設定比較的正則表達式的內容即可。
posted on 2012-04-16 10:14 SkyDream 閱讀(3537) 評論(0) 編輯 收藏 所屬分類: C# WinForm