1
我想創建一個文本框只接受字母和數字,並丟棄所有的特殊字符。我需要這個輸入一個有效的文件名,沒有擴展名。 我使用下面的代碼:SIP:Key.Shift沒有檢測到
private void txtFName_KeyDown(object sender, KeyEventArgs e)
{
if (!(((e.Key >= Key.A) && (e.Key <= Key.Z)) || ((e.Key >= Key.D0) && (e.Key <= Key.D9)) || (e.Key == Key.Shift) || (e.Key == Key.Back)))
{
e.Handled = true;
MessageBox.Show("No Special Characters are Allowed!");
}
}
不幸的是,「按鍵響應」事件是不存在的,所以我想通了,這是實現我在做什麼是最好的方式。
我現在面臨的問題是:
正如你可以在上面的代碼中看到,我已經採取了「Shift」鍵按下的照顧,但是當我按下「Shift」鍵在SIP中, 「不允許特殊字符」消息框彈出3次,然後我可以鍵入大寫字母!所以這基本上阻止我輸入任何大寫字母。
更糟糕的是,它接受所有字符!@#$%^ & *()。可能是因爲它將這些數字從0-9中檢測出來。看起來,關鍵代碼在2和@,3和#等方面的返回值相同。這是非常奇怪的行爲!而且我甚至無法用上述技術使用下劃線鍵。
這樣的行爲在專業App中顯然是不可接受的。
如何創建僅接受字母,數字和下劃線並丟棄所有其他字符的文本框? 此外,「Shift」鍵未檢測到問題嗎?