CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

如何在Form中使用方向键

楼主jiefreeman(zj)2005-08-01 12:06:10 在 .NET技术 / C# 提问

各位神一样的高手请看:  
          小生最近在做一个小游戏,是winform的,其中少不了要用到方向键;界面上还有几个快捷按钮,问题就出在这里:  
          当我按方向键的时候,游戏的控制并没有出现,而是不停的在几个快捷键上切换焦点;当然了,用字母键可以解决,或者我猜不要快捷键,改成菜单也许也能解决,但...我相信在目前这种条件下还是可以有办法用到方向键的,请教高手大人!  
          跟这个类似的还有系统按键的控制问题,比如说Alt,Ctrl等.  
  问题点数:100、回复次数:18Top

1 楼jiefreeman(zj)回复于 2005-08-03 02:52:15 得分 0

顶一下...Top

2 楼zeusvenus()回复于 2005-08-03 06:22:00 得分 5

可以用keycode=多少来写响应的事件啊Top

3 楼lih163(做自己喜欢的事)回复于 2005-08-03 08:06:34 得分 0

这个呀,keyup可以吗Top

4 楼3tzjq(永不言弃)回复于 2005-08-03 08:50:44 得分 2

KeyCode.Up       :   上箭头  
  KeyCode.Down   :   下箭头  
  KeyCode.Left   :   左箭头  
  KeyCode.Right:   右箭头  
  ....  
  MSDN里有说明  
  Top

5 楼3tzjq(永不言弃)回复于 2005-08-03 08:51:55 得分 5

ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWindowsFormsKeysClassTopic.htmTop

6 楼songhtao(三十年孤独)回复于 2005-08-03 09:17:46 得分 3

在form的KeyDown事件里处理呀。Top

7 楼cdo(Everything has a favourable turn)回复于 2005-08-03 09:25:32 得分 0

呵呵,我也想知道,帮你up一下.Top

8 楼jiefreeman(zj)回复于 2005-08-03 09:54:26 得分 0

可能我没讲明白,是这样的,四楼的大虾说的我用到了,而且已经获得了四个方向键在winform上的keyup事件了,但是,是这样的:  
   
                        +---------------------+  
                        |                                           |  
                        |   +--------+   +------+   |  
                        |   |       游       |   |button|   |  
                        |   |       戏       |   +------+   |  
                        |   |       显       |                     |  
                        |   |       示       |   +------+   |  
                        |   |       区       |   |button|   |  
                        |   |                 |   +------+   |  
                        |   +--------+                     |  
                        |                                           |  
                        +---------------------+  
   
    这下应该清楚一点了...在这个界面上我想用方向键控制游戏区里的游戏,但是这个界面上还有几个按钮,如果我一按方向键,结果是,只是不停的在按钮上切换焦点,而不是控制游戏区里的游戏.但是如果不用方向键,换成任何一个字母键就可以.  
    我就是想用方向键对游戏区里的游戏进行控制,而不是在按钮上切换焦点.  
    大侠们,指点一下迷津吧~~Top

9 楼3tzjq(永不言弃)回复于 2005-08-03 10:02:14 得分 5

这是Windows默认的!你应设界面窗体的KeyPreview   =   true   并处理base.KeyDown   或   base.KeyPress事件,然后在事件里处理按下键所执行的操作。Top

10 楼jinjazz(近身剪)回复于 2005-08-03 10:11:00 得分 50

const   int   WM_SYSKEYDOWN=260;  
  const   int   WM_KEYDOWN=256;  
   
  protected   override   bool   ProcessCmdKey(ref   Message   msg,Keys   keyData)  
  {  
  if   ((msg.Msg==WM_KEYDOWN)||(msg.Msg==WM_SYSKEYDOWN))  
  {  
  switch   (keyData)  
  {  
  case   Keys.Up:  
  MessageBox.Show("up");  
  break;  
  case   Keys.Down:  
  MessageBox.Show("down");  
  break;  
  case   Keys.Left:  
  MessageBox.Show("left");  
  break;  
  case   Keys.Right:  
  MessageBox.Show("right");  
  break;  
  }  
  }  
  return   true;  
  }  
  Top

11 楼drk928(一起看斜阳)回复于 2005-08-03 10:13:14 得分 0

要不要我发一个俄罗斯方块的源代码给你啊?Top

12 楼jiefreeman(zj)回复于 2005-08-03 10:15:03 得分 0

谢谢永不言弃大虾,窗体的KeyPreview=true偶已经设了,但base.KeyDown或base.KeyPress这两个事件我还是第一次听说,能不能稍微讲细一点点.窗子纸就差一点就破了...Top

13 楼jiefreeman(zj)回复于 2005-08-03 10:19:26 得分 0

一起看斜阳,我要我要:)发到我的邮箱里谢了!zj_jie@163.COMTop

14 楼3tzjq(永不言弃)回复于 2005-08-03 10:20:44 得分 5

构造函数中:  
  this.KeyDown   +=new   KeyEventHandler(ImportExcelHelper_KeyDown);  
   
  处理KeyDown事件:  
  private   void   ImportExcelHelper_KeyDown(object   sender,   KeyEventArgs   e)  
  {  
  switch(e.KeyCode)  
  {  
  case   Keys.Up:  
  MessageBox.Show("Up!");  
  break;  
  case   Keys.Down:  
  MessageBox.Show("Down!");  
  break;  
  case   Keys.Left:  
  MessageBox.Show("Left!");  
  break;  
  case   Keys.Right:  
  MessageBox.Show("Right!");  
  break;  
  }  
  }Top

15 楼jiefreeman(zj)回复于 2005-08-03 10:23:11 得分 0

无比佩服中!先拜一下各位神一样的大虾!Top

16 楼jiefreeman(zj)回复于 2005-08-03 11:02:32 得分 0

充电中,你的这个函数怎么用啊,我看它是重写一个什么函数了,但放在什么地方用呢?(本人自学C#两个月左右,水平不高,不好意思!)Top

17 楼jinjazz(近身剪)回复于 2005-08-04 08:36:32 得分 5

public   class   Form1   :   System.Windows.Forms.Form  
  {  
  }  
   
  里面Top

18 楼pupo(泡泡)回复于 2005-08-04 08:46:50 得分 20

ProcessCmdKey是Form的一个方法,你重写它就可以了Top

相关问题

  • 使用方向键移动光标到其它控件里!
  • sql*plus怎么方向键无法使用?
  • 关于在excel中使用上下方向键的问题!!!急!!求助!!SOS!!
  • 还是关于有command的form上方向键无响应的问题
  • 如何在Form的KeyDown事件中响应左、右方向键(注:Form中有多个Button)
  • 键盘控制方向
  • 方向键的问题
  • 如何在数据窗口中使用上下左右方向键来改变焦点在行列中的位置?
  • 如何使用回车键触发form的sumbit?
  • 用KeyDown事件怎样检测到在键盘上按方向键(左)、方向键(右)、方向键(上)、方向键(下)?

关键词

  • 函数
  • 游戏
  • 界面
  • 控制
  • 方向键
  • keydown
  • 箭头
  • messagebox
  • 大虾
  • 按钮

得分解答快速导航

  • 帖主:jiefreeman
  • zeusvenus
  • 3tzjq
  • 3tzjq
  • songhtao
  • 3tzjq
  • jinjazz
  • 3tzjq
  • jinjazz
  • pupo

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo