日期:2014-05-17  浏览次数:20880 次

为什么我窗体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的问题,呵呵