【问题标题】:How do I capture a key press?如何捕获按键?
【发布时间】:2013-02-08 22:57:03
【问题描述】:

我正在学校学习编程 2,我们正在使用 Visual Studio 2010 专业版。

我正在尝试制作一个游戏,您可以使用箭头键控制角色来移动角色以进行跳跃和前后移动。

我已经完成并设置了所有图形,但我需要能够制作它,以便我可以通过使用键更改变量来控制它,以使角色移动并与事物交互。

如何让程序注册被按下的键?

这是我目前所拥有的:

namespace keypress2 
    { 
    public partial class Form1 : Form 
        { 
        public Form1() 
        { 
            InitializeComponent(); 
            this.textBox1.KeyDown += textBox1_KeyDown; 
        } 

        private void textBox1_KeyDown(object sender, KeyEventArgs e) 
        {

        } 
    } 
}

【问题讨论】:

  • 我尝试了很多东西,我什至不记得我尝试了什么
  • @BrentClark 嗨,欢迎来到 SO。你需要给我们一些你遇到的具体问题。假设 Visual Studio 附带文档 - 如果其中有不清楚的地方,请询问。
  • 文档是什么意思???这就是我到目前为止的命名空间 keypress2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.textBox1.KeyDown += textBox1_KeyDown; } private void textBox1_KeyDown(object sender, KeyEventArgs e) { } } }
  • 我不知道该怎么做它实际上显示鳕鱼的方式。我是这个网站的新手:/

标签: c# keypress


【解决方案1】:

这里有一篇关于在 c# 中处理非阻塞键盘输入的博文

http://www.dutton.me.uk/2009/02/24/non-blocking-keyboard-input-in-c/

另外,关于控制台键盘输入的另一篇堆栈溢出文章

How to read a key pressed by the user and display it on the console?

当然,我假设您正在开发控制台应用程序。如果你在做一个 WinForm 应用,那么答案就不同了。

【讨论】:

  • 哦,对不起,我没有指定我正在使用 Windows 窗体,我什至不知道到目前为止我尝试了什么。我尝试了很多不同的东西,这甚至都不好笑:/
  • 这里有一篇关于处理按键的文章:social.msdn.microsoft.com/Forums/en/winforms/thread/…
【解决方案2】:

您需要使用“PreviewKeyDown 事件”来捕捉按键。

假设您想在表单中移动“Hero”,它是一个按钮。

Public Class Form1
    Private Hero As New Button
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Hero.Parent = Me
        Hero.Enabled = False
    End Sub
    Private Sub Form1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles Me.PreviewKeyDown
        Select Case e.KeyCode
            Case Keys.Left
                Hero.Left -= 5
            Case Keys.Right
                Hero.Left += 5
            Case Keys.Down
                Hero.Top += 5
            Case Keys.Up
                Hero.Top -= 5
        End Select
    End Sub
End Class

您还可以捕获其他键,例如 W、A、S、D 作为替代键来移动您的角色,以及 Control+S(保存游戏)。 :D

【讨论】:

    【解决方案3】:

    要为任何控件添加事件,请按 F4 以打开属性窗口并单击闪电图标:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      相关资源
      最近更新 更多