C# Textbox 輸入限制數字及一個小數點@Sunny的工程師日記
在開發程式的時候,常常會有某些情況是限制輸入的內容,例如我現在要一組浮點數的內容,但是操作者往往不會依照著程式設計師的想法走,或許他會多加一個小數點,或許會加入奇怪的標點符號,這就會照成程式的轉換型別時出現問題,所以要避免這種狀況,就必須要讓使用者輸入內容時作出限制。
範例:
- 輸入一個小數點。
- 數字範圍0~9。
- 不能夠出現奇怪的標點符號
解決方式:
- 要如何判斷0~9的數字區間呢?最快的做法就是判斷使用者所輸入的鍵盤對應的數字是否落在0~9之間,到這邊還不要太開心,因為電腦判斷0~9的阿拉伯數字是必須經過換算才會得到這個結果,所以這邊必須去對照ASCII Code。阿拉伯數字0~9分別對應ASCII Code DEC 48~57。
- 此時Textbox就可以有效的判斷輸入的內容是否為阿拉伯數字0~9區間,但為了輸入方便,必須將Enter 及delete按鍵也加入到判斷,這樣子輸入上會變得非常方便。
以下是程式碼的,可以自行參考。
//限制輸入的內容必須為數字 private void tb_KeyPress_limite_KeyPress(object sender, KeyPressEventArgs e) { //限定輸入的內容僅能有一個小數點 if (e.KeyChar == '.') { foreach (char i in (sender as TextBox).Text)//判定textBox1是否有小數點 { if (i == '.') e.Handled = true;//有 } return; } // e.KeyChar == (Char)48 ~ 57 -----> 0~9 // e.KeyChar == (Char)8 -----------> Backpace // e.KeyChar == (Char)13-----------> Enter if (e.KeyChar == (Char)48 || e.KeyChar == (Char)49 || e.KeyChar == (Char)50 || e.KeyChar == (Char)51 || e.KeyChar == (Char)52 || e.KeyChar == (Char)53 || e.KeyChar == (Char)54 || e.KeyChar == (Char)55 || e.KeyChar == (Char)56 || e.KeyChar == (Char)57 || e.KeyChar == (Char)13 || e.KeyChar == (Char)8) { e.Handled = false; } else { e.Handled = true; } }
想問您,我在使用textbox的時候實在找不到KeyPress的觸發條件,請問您知道為什麼嗎?
回覆刪除