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

做了个简单的小游戏和一个简单的播放器,但是按键冲突,怎么解决啊。谢谢。。内附截图
如图所示,本来只做了了个左边的游戏,用上下左右键控制那个黑色dart vader方向,然后Q键darth vader发子弹。
然后我在右边加了个panel,上面加了个播放器和播放列表。在运行程序,上下左右键和Q键全部不管用了。。。倒是右边的播放器能用。然后我把右边这些都删了,在运行,那几个键又都可以了。。
键盘我是用e.keycode...key.up,key.down...这些控制的。。。

谁知道这是怎么冲突的啊?是不是需要在property里面设置一下啊。。。谢谢。。。非常感谢!!!!!

THANK YOU SO MUCH



------解决方案--------------------
首先设置窗体的KeyPreview属性为true,当键事件传递给具有焦点的控件前窗体接收该事件
设置上面的属性之后除了方向键其他键窗体都可以接收了,但是发现方向键还是接收不到,方向键的消息被系统处理了(处理控件移动焦点),重写ProcessDialogKey即可(不过这样就不可以用方向键改变控件的焦点了)

protected override bool ProcessDialogKey(Keys keyData)
{

  if (keyData == Keys.Up 
------解决方案--------------------

      keyData == Keys.Down 
------解决方案--------------------

      keyData == Keys.Left 
------解决方案--------------------

      keyData == Keys.Right)
      {
                return false;
      }
      else
      {
         return base.ProcessDialogKey(keyData);
      }
}