问题描述
privatevoidForm1_KeyPress(objectsender,KeyPressEventArgse){stringkey=e.KeyChar.ToString();if(key=="a"){dir=1;}if(key=="d"){dir=2;}if(key=="s"){dir=3;}if(key=="s"){dir=4;}}这段代码中如果我把adsw换成Up,Down,Left,Right就不能用了,请问有什么方法
解决方案
解决方案二:
KeyPress的解释是:Occurswhenacharacter.spaceorbackspacekeyispressedwhilethecontrolhasfocus.方向键不是character,space或者backspace,因此不fire很好理解。但是我自己试了下keydown也不fire,我测试的是form,你可以试一试其它control.按理说可以。最后我是使用这种方法protectedoverrideboolProcessCmdKey(refMessagemsg,KeyskeyData){if(keyData==Keys.Left){MessageBox.Show("YoupressedLeftarrowkey");returntrue;}returnbase.ProcessCmdKey(refmsg,keyData);}
参考:
解决方案三:
if(keyData==Keys.Left)为了养成良好习惯最好用ifelse或switch
解决方案四:
KeyPress只对可显示按键触发,不是所有按键都会触发KeyPress。要捕获所有按键,应该使用KeyDown和KeyUp事件。
解决方案五:
#1正解功能键无法触发KeyPress