this.KeyDown += (s, e) =>
                {
                    if (e.KeyCode == Keys.Up)
                    { }//上
                    if (e.KeyCode == Keys.Down)
                    { }//下
                    if (e.KeyCode == Keys.Left)
                    { }//左
                    if (e.KeyCode == Keys.Right)
                    { }//右
                };

解决方案 »

  1.   

    在窗体设计界面下找事件列表,双击里面的keydown事件,然后在自动生成的方法中写代码就行了。变量 "e" 就是从键盘接收的按键,用switch(e.KeyCode)去触发不同的方法就行了。        private void GameFrom_KeyDown(object sender, KeyEventArgs e)
            {
                switch (e.KeyCode)
                {
                    case Keys.W:
                        { 
                            //
                        }
                        break;
                    case Keys.A:
                        { 
                            //
                        }
                        break;
                    case Keys.S:
                        { 
                            //
                        }
                        break;
                    case Keys.D:
                        { 
                            //
                        }
                        break;
                }
            }顺便一提,想让圆移动的话可以先擦除原来的,再改坐标,再画一个新的圆。
      

  2.   

    要教会人什么的我也没信心,自己也刚学会没几天先把代码给楼主看看吧。这是向左移动时触发的方法
    public void MoveLeft()                      
         {            
                m_RunBrick.Erase(m_MainPalette);
                m_RunBrick.X--;
                m_RunBrick.Paint(m_MainPalette);
            }m_RunBrick是我创建的一个Brick类的对象,Brick类是自己造的,里面有X和Y两个int型坐标,还有用于擦除图形的Erase方法和用于画出图形的Paint方法。MoveLeft方法中的三行就是我说的先擦后改最后再画如果楼主还不知道怎么实现擦除和画出图形的话,建议去看看这个教程:
    http://wenku.baidu.com/link?url=c_38P335wQBkaOofPRxmaowDLoW8JujIxPvM-XrqaH2kSiQ3TFosqjfxktqlJhHohiquGdPB8fLmLhEpKV7CtR6hHTTbR0due5MloeKFJNy个人认为这个教程简单易懂,最后还能做出个小游戏来玩,挺有趣的。基于这个方块画面,我还想做一个类似于坦克大战一样的游戏,可是因为控制操作的多线程问题没解决,进度一直停滞不前