这个问题是关于俄罗斯方块的。。
在form中 放置2个按键 1个退出 1个开始 
都添加click事件· 
在form中还有放置的panel 这个是 游戏区域 用上下左右控制的
这3个同时放的时候  我按开始键  游戏开始 
再按 方向键控制游戏方块移动的时候 就出问题了
他只在退出按键上徘徊!!!
也就是说方向键不控制方块 了 
这个事怎么回事难道button跟panel有先后顺序

解决方案 »

  1.   

     private void btnBegin_Click(object sender, EventArgs e)
            {                
                btnBegin.Enabled = false;
                btnQuit.Enabled = false;
                Game.Clear();  // 清除游戏区数据
                NewBox();      // 产生新的方块
                timer1.Start();            panel1.Invalidate();
                panel2.Invalidate();
            }
    别都是来学习的啊。汗。。
      

  2.   

    应该是你控件焦点问题 
      当你点击btnBegin后焦点处于btnBegin上 
    所以当你用方向键移动时焦点就在同在工作区的两个btn上移动
    不知对不对
      

  3.   

    在button的click事件里添加panel.Focus()
      

  4.   

    程序执行后 
    按钮设置为未激活就是的了
    通过KeyPress事件来触发事件
    就不麻烦了
    而且 Focus()方法不一定有效
      

  5.   

    是焦点问题,曾经也遇到过这种情况,
    那时没解决就把Button砍掉了-_-!
    你可以用下10楼的方法,
    同时试试让游戏区域的panel获得焦点Focus()。
    只是个建议,我也学习来的...
      

  6.   


    keypress 事件添加完成 把CLICK的 注释掉  把代码弄到PRESS下 
    是这个意思吧但是点击了 他运行不了游戏了 
    还有panel.focus(); 这个也是不可以的!~~
    http://download.csdn.net/source/1235590 这个是这个程序的地址  需要0分就能下 帮我看看吧。
    下完 自己添加1个按钮 测试一下 这两个方法都不行  
    调试一下还有什么方法能解决这个问题 
    诚信感谢帮助的朋友 追加分数!
      

  7.   

    这个事件不需要
     private void Form1_KeyDown(object sender, KeyEventArgs e);
    添加如下函数
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                switch (keyData)
                {
                    case Keys.Right:
                        if (objBox.OutRange(ConstData.RIGHT) && Check(ConstData.RIGHT))
                        {
                            objBox.xCurrentPos++;
                            panel1.Invalidate();
                        }
                        break;
                    case Keys.Left:
                        if (objBox.OutRange(ConstData.LEFT) && Check(ConstData.LEFT))
                        {
                            objBox.xCurrentPos--;
                            panel1.Invalidate();
                        }
                        break;
                    case Keys.Down:
                        if (objBox.OutRange(ConstData.DOWN) && Check(ConstData.DOWN))
                        {
                            objBox.yCurrentPos++;
                            panel1.Invalidate();
                        }
                        break;
                    default:
                        return base.ProcessCmdKey(ref msg, keyData);
                }
                return true;
            }
      

  8.   

    方向键是作为系统键来处理的,默认方向键的作用是移动焦点,系统处理完了就不会触发Form的处理方法。
    在没有第二个按钮的时候没有其他的空间可以移动焦点,系统不处理,这样就轮到Form来处理了,所以程序能够正常运行。
    解决方法就是 覆盖默认的系统键处理方式。如上所示,截取方向键的处理。