为什么我窗体KeyDown KeyUp事件触发不了
在做俄罗斯方块
事件有4个 Load KeyDown KeyUp Paint 单独拿一个窗体做触发事件是可用的
//里面的窗体事件不知道为什么触发不了
private void frmMain_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
State = Direction.up;
break;
case Keys.Down:
State = Direction.down;
break;
case Keys.Left:
State = Direction.left;
break;
case Keys.Right:
State = Direction.right;
break;
}
}
[解决办法]
那是因为你输入焦点在窗体的子控件上,办法是keypreview设成true就可以了
[解决办法]
恩,因为有控件遮挡在你的窗口之上,你需要preview控件的消息,所以你需要allow preview,然后在previewKeyDown/Up中做出相应的处理。
这是一个message route的问题,呵呵