c WPF中對輸入值任意限制的方法及通用示例

2021-10-21 18:49:21 字數 1311 閱讀 8046

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 使用...