以下code都寫在TextBox的KeyPress()裡面就可以了
//only allow integer (no decimal point) if (!char.IsDigit(e.KeyChar) && (e.KeyChar != '.') && (e.KeyChar != '-') && (e.KeyChar != 8)) e.Handled = true; // only allow one decimal point if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1)) e.Handled = true; // only allow sign symbol at first char if ((e.KeyChar == '-') && ((sender as TextBox).Text.IndexOf('-') > -1)) e.Handled = true; if ((e.KeyChar == '-') && !((sender as TextBox).Text.IndexOf('-') > -1) && ((sender as TextBox).SelectionStart != 0)) e.Handled = true;首先利用IsDigit判斷輸入的是否為數字,若不是的話只能允許"."、"-"、BackSpace(←,KeyChar為8)
接下來分別判斷小數點及負號
- 小數點只能出現一次,用IndexOf('.')判斷是否已經有小數點,若有的話則不允許輸入
- -號只能出現一次而且只能出現在字串最前面,因此先以IndexOf('-')判斷是否出現過,若已出現過且位置不為0(最前面)則不允許輸入