如何在Form中使用方向键

jiefreeman 2005-08-01 12:06:10
各位神一样的高手请看:
小生最近在做一个小游戏,是winform的,其中少不了要用到方向键;界面上还有几个快捷按钮,问题就出在这里:
当我按方向键的时候,游戏的控制并没有出现,而是不停的在几个快捷键上切换焦点;当然了,用字母键可以解决,或者我猜不要快捷键,改成菜单也许也能解决,但...我相信在目前这种条件下还是可以有办法用到方向键的,请教高手大人!
跟这个类似的还有系统按键的控制问题,比如说Alt,Ctrl等.
...全文
421 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
pupo 2005-08-04
  • 打赏
  • 举报
回复
ProcessCmdKey是Form的一个方法,你重写它就可以了
jinjazz 2005-08-04
  • 打赏
  • 举报
回复
public class Form1 : System.Windows.Forms.Form
{
}

里面
jiefreeman 2005-08-03
  • 打赏
  • 举报
回复
充电中,你的这个函数怎么用啊,我看它是重写一个什么函数了,但放在什么地方用呢?(本人自学C#两个月左右,水平不高,不好意思!)
jiefreeman 2005-08-03
  • 打赏
  • 举报
回复
无比佩服中!先拜一下各位神一样的大虾!
3tzjq 2005-08-03
  • 打赏
  • 举报
回复
构造函数中:
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;
}
}
jiefreeman 2005-08-03
  • 打赏
  • 举报
回复
一起看斜阳,我要我要:)发到我的邮箱里谢了!zj_jie@163.COM
jiefreeman 2005-08-03
  • 打赏
  • 举报
回复
谢谢永不言弃大虾,窗体的KeyPreview=true偶已经设了,但base.KeyDown或base.KeyPress这两个事件我还是第一次听说,能不能稍微讲细一点点.窗子纸就差一点就破了...
SeeSunSet 2005-08-03
  • 打赏
  • 举报
回复
要不要我发一个俄罗斯方块的源代码给你啊?
jinjazz 2005-08-03
  • 打赏
  • 举报
回复
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;
}
3tzjq 2005-08-03
  • 打赏
  • 举报
回复
这是Windows默认的!你应设界面窗体的KeyPreview = true 并处理base.KeyDown 或 base.KeyPress事件,然后在事件里处理按下键所执行的操作。
jiefreeman 2005-08-03
  • 打赏
  • 举报
回复
可能我没讲明白,是这样的,四楼的大虾说的我用到了,而且已经获得了四个方向键在winform上的keyup事件了,但是,是这样的:

+---------------------+
| |
| +--------+ +------+ |
| | 游 | |button| |
| | 戏 | +------+ |
| | 显 | |
| | 示 | +------+ |
| | 区 | |button| |
| | | +------+ |
| +--------+ |
| |
+---------------------+

  这下应该清楚一点了...在这个界面上我想用方向键控制游戏区里的游戏,但是这个界面上还有几个按钮,如果我一按方向键,结果是,只是不停的在按钮上切换焦点,而不是控制游戏区里的游戏.但是如果不用方向键,换成任何一个字母键就可以.
  我就是想用方向键对游戏区里的游戏进行控制,而不是在按钮上切换焦点.
  大侠们,指点一下迷津吧~~
cdo 2005-08-03
  • 打赏
  • 举报
回复
呵呵,我也想知道,帮你up一下.
我不懂电脑 2005-08-03
  • 打赏
  • 举报
回复
在form的KeyDown事件里处理呀。
3tzjq 2005-08-03
  • 打赏
  • 举报
回复
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWindowsFormsKeysClassTopic.htm
3tzjq 2005-08-03
  • 打赏
  • 举报
回复
KeyCode.Up : 上箭头
KeyCode.Down : 下箭头
KeyCode.Left : 左箭头
KeyCode.Right: 右箭头
....
MSDN里有说明
lih163 2005-08-03
  • 打赏
  • 举报
回复
这个呀,keyup可以吗
zeusvenus 2005-08-03
  • 打赏
  • 举报
回复
可以用keycode=多少来写响应的事件啊
jiefreeman 2005-08-03
  • 打赏
  • 举报
回复
顶一下...

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧