1.禁用輸入法
在控制項中設定該方法,注意,該方法只是禁止了」輸入法「,比如搜狗之類的,但」鍵盤「本身的鍵值不受影響(原生鍵盤),這裡是避免輸入法的上屏操作會越過我們的過濾器
inputmethod.isinputmethodenabled ="false"
2.新增監聽事件
該事件在每輸入乙個符號時觸發
previewkeydown="tb_previewkeydown""
示例
3.在事件中處理過濾
e中包含當前的按下的鍵位,text包含的是之前已存在文字框的值
該過濾器只允許數字,小數點,及負號的存在,且小數點不能出現兩次,不能出現在非數字的後面,負號只能出現在第一位(也可以徹底禁用負號)
通過對e.key的自由組合可實現任意限制
private void tb_previewkeydown(object sender, keyeventargs e)
else if (!int.tryparse(text, out temp)) //如果已存在的值不能轉換成數字,說明後面不能跟小數點
e.handled = false;
return;
}if (e.key == key.oemminus) //有值的情況下,不能輸入負號。負號只能出現在第一位
}//遮蔽非法按鍵
if (e.key >= key.numpad0 && e.key <= key.numpad9) //數字0-9
if (e.key >= key.d0 && e.key <= key.d9) //小鍵盤 0- 9
if (e.key == key.back || e.key == key.subtract) //回退/中文-/英文 -
// if (e.key >= key.oemminus) //徹底禁用負號
// e.handled = true; //如果都沒匹配上,就設為不合法
4.其他方法
1.使用正則
該正則用於過濾0-9 小數點及負號,但是存在兩個問題
//^[0-9.\-]+$
regex re = new regex("[^0-9.]+");
e.handled = re.ismatch(e.text);
正則我不熟,如果有辦法可以解決的話,還是比較簡單的 js對輸入文字個數的限制
第一種 乙個漢字算一位,兩個字母或符號算一位。通過ascii編碼來判斷 textarea.onkeyup function 通過charcodeat編碼來判斷 鍵盤up的時候判斷 textarea.onkeyup function else span.innerhtml 150 num 0 0 15...
C 限制TextBox控制項內輸入值的範圍
舉個例子,比如要限制textbox1控制項內只能輸入1 100的數字 先將textbox1的maxlength屬性設定成3 1.首先要限制輸入的只能是數值,不能是字母或其他符號 選擇新增textbox1的keypress事件,如下 private void textbox1 keypress obj...
qt中限制QLineEdit的輸入範圍
1 輸入整數部分 lineedit setvalidator newqintvalidator 1,1000,this 但是仍然能輸入0000000 2 簡單的小數輸入 lineedit setvalidator newqdoublevalidator 180.0,180.0,6,this 3 使用...