上色

Code Block

2021年7月4日 星期日

[.Net][C#] 禁止TextBox輸入數字

太常用到這功能了,寫下來記錄一下
以下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) 

接下來分別判斷小數點及負號
  1. 小數點只能出現一次,用IndexOf('.')判斷是否已經有小數點,若有的話則不允許輸入 
  2. -號只能出現一次而且只能出現在字串最前面,因此先以IndexOf('-')判斷是否出現過,若已出現過且位置不為0(最前面)則不允許輸入