【新手求助】关于键盘KeyDown事件 本人新手,前两天看个贪吃蛇教程,于是学习一下。这是界面,可是开始游戏的时候,方向键的事件不会响应,而是变成焦点在几个按钮之间的切换。只有把按钮的Enable设为false才行。请问还有什么解决方法么?求高手解答额 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在你的窗体中粘贴这个protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { return base.ProcessCmdKey(ref msg, keyData); }在这里处理键盘事件 窗体属性 KeyPreview=true 后才能接收Keydown事件 窗体属性 KeyPreview=true 后才能接收Keydown事件是这样么?还是不行额,依旧是方向键会切换按钮的选中状态 窗体属性 KeyPreview=true 后才能接收Keydown事件恩恩 成功了 可是不能检测到方向键之类的是怎么回事啊?这些键要怎么检测呢 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { sb.Dir = (sb.Dir == Snake.SnakeBody.Direction.South) ? Snake.SnakeBody.Direction.South : Snake.SnakeBody.Direction.North; } else if (e.KeyCode == Keys.Down) { sb.Dir = (sb.Dir == Snake.SnakeBody.Direction.North) ? Snake.SnakeBody.Direction.North : Snake.SnakeBody.Direction.South; } else if (e.KeyCode == Keys.Left) { sb.Dir = (sb.Dir == Snake.SnakeBody.Direction.Easth) ? Snake.SnakeBody.Direction.Easth : Snake.SnakeBody.Direction.West; } else if (e.KeyCode == Keys.Right) { sb.Dir = (sb.Dir == Snake.SnakeBody.Direction.West) ? Snake.SnakeBody.Direction.West : Snake.SnakeBody.Direction.Easth; } else e.Handled = true; } 我的代码是switch(e.KeyCode) { case Keys.Left: if(current!=Direction.Right) current=Direction.Left; break; …… }这样不行么?还是方向键要用别的方法响应? 已经给你说的很明白了窗体里贴我给你那段就解决了。protected override bool ProcessCmdKey(ref Message msg, Keys keyData){ 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 base.ProcessCmdKey(ref msg, keyData);} 请问,Image图片样式 急急急!! 求大虾们帮我讲讲 使用VS2010(C#)做了一个小工具,其中使用到WCF,如何可以避免使用.net v4.0? 弱弱的问下,textbox里面怎么同时显示字和图片? js replace(/????/g,"")的问题 关于AxWebBrowser中使用X509Certificate的方法? 如何判断数据库操作成功 C# 多线程问题 虚心请教:“在线试听" m3u Stream 你被NET的程序运行慢惹怒了吗? 关于状态模式 即时通讯消息查看器问题
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
return base.ProcessCmdKey(ref msg, keyData);
}
在这里处理键盘事件
窗体属性 KeyPreview=true 后才能接收Keydown事件
窗体属性 KeyPreview=true 后才能接收Keydown事件是这样么?还是不行额,依旧是方向键会切换按钮的选中状态
窗体属性 KeyPreview=true 后才能接收Keydown事件恩恩 成功了 可是不能检测到方向键之类的是怎么回事啊?这些键要怎么检测呢
{
if (e.KeyCode == Keys.Up)
{
sb.Dir = (sb.Dir == Snake.SnakeBody.Direction.South) ? Snake.SnakeBody.Direction.South : Snake.SnakeBody.Direction.North;
}
else if (e.KeyCode == Keys.Down)
{
sb.Dir = (sb.Dir == Snake.SnakeBody.Direction.North) ? Snake.SnakeBody.Direction.North : Snake.SnakeBody.Direction.South;
}
else if (e.KeyCode == Keys.Left)
{
sb.Dir = (sb.Dir == Snake.SnakeBody.Direction.Easth) ? Snake.SnakeBody.Direction.Easth : Snake.SnakeBody.Direction.West;
}
else if (e.KeyCode == Keys.Right)
{
sb.Dir = (sb.Dir == Snake.SnakeBody.Direction.West) ? Snake.SnakeBody.Direction.West : Snake.SnakeBody.Direction.Easth;
}
else e.Handled = true;
}
switch(e.KeyCode)
{
case Keys.Left:
if(current!=Direction.Right)
current=Direction.Left;
break;
……
}这样不行么?还是方向键要用别的方法响应?
窗体里贴我给你那段就解决了。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
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 base.ProcessCmdKey(ref msg, keyData);
}