【新手求助】关于键盘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);} 网站被流量攻击,求软件。 查询数据的时候窗体出现假死 C#实现类似于千千静听的雌性窗体效果 如何循环得到ListBox已选择的项 上传网站时,sql server 数据库问題????????? C# asp.net相关求助 在c#中如何实瑞套打(用窗体程序,或asp.net程序实现都可) 读取excel,遇到空cell的问题 请问大家现在流行有那几种加密算法有那几种 怎样获得datagrid某一cell的值 关于状态模式 即时通讯消息查看器问题
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);
}