我使用這個代碼來阻止美元按鈕shift + 4 = $。 在此表http://expandinghead.net/keycode.html的$是碼36鍵入美元
現在的keydown代碼:
if (e.KeyValue == 36)
{
e.Handled = true;
}
代碼無法正常工作,爲什麼?
我使用這個代碼來阻止美元按鈕shift + 4 = $。 在此表http://expandinghead.net/keycode.html的$是碼36鍵入美元
現在的keydown代碼:
if (e.KeyValue == 36)
{
e.Handled = true;
}
代碼無法正常工作,爲什麼?
這是因爲您首先按shift
,然後是4,所以當使用KeyDown
事件時,您將分別得到shift
(鍵值16)的代碼。
要達到您想要的效果,請使用KeyPress
事件,而不是KeyDown
。 KeyPress
將註冊您輸入的字符($
),而不是單個按鍵。
if (e.KeyChar == '$')
{
e.Handled = true;
}
爲什麼不上KeyPress事件
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '$')
{
e.Handled = true;
}
}
是的,這就是我用於特定字符(我會使用KeyDown的特殊鍵,如PgDn或其他沒有相應的字符) –
檢查:http://stackoverflow.com/questions/8459067/winforms-capturing-the-combination-of-key-presses-using-processcmdkey -vs-keydo – MUG4N
2000行爲一鍵?不用了,謝謝! – Federal09
這可能不是您的應用程序中的問題,但請注意,如果用戶使用不同的鍵盤佈局,或者如果他從其他地方複製粘貼'$',他可能會繞過您的驗證。 – Vache