如何捕获按键?

时间:2013-02-08 22:57:03

标签: c# keypress

我正在学校编程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) 
        {

        } 
    } 
}

3 个答案:

答案 0 :(得分: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应用程序,那么答案就不同了。

答案 1 :(得分:1)

您需要使用“PreviewKeyDown Event”来捕获按键。

我们只想说你想在你的表格中移动你的“英雄”,这是一个按钮。

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

答案 2 :(得分:0)

要为任何控件添加事件,请按F4打开属性窗口,然后单击Lightning Bolt图标:

enter image description here