C# 无法获取空格键输入

C# 无法获取空格键输入,c#,visual-studio,C#,Visual Studio,当我按下空格键时,我想要一个变量递增。 这是我迄今为止尝试过的,但似乎不起作用。没有错误消息,所以我不知道出了什么问题 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } int Coins = 0; int ButtonKeyNumber = (int)Key.Space; private vo

当我按下空格键时,我想要一个变量递增。 这是我迄今为止尝试过的,但似乎不起作用。没有错误消息,所以我不知道出了什么问题

    public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    int Coins = 0;
    int ButtonKeyNumber = (int)Key.Space;

    private void textBlockCoins_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if (e.KeyValue == ButtonKeyNumber)
        {
            Coins = Coins + 1;
            textBlockCoins.Text = "You Have " + Coins + "Coins";
        }
    }
}
当我运行代码时,文本框只显示“你有0个硬币”。
变量ButtonkyNumber存在,因为我希望能够轻松更改需要按下的键。

您可能使用了错误的
键。使用
System.Windows.Forms.Keys
类,这是由
KeyEventArgs.KeyCode
提供的类型。试试这样吧

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    int Coins = 0;
    Keys CoinKey = System.Windows.Forms.Keys.Space;

    private void textBlockCoins_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if (e.KeyCode == CoinKey)
        {
            Coins = Coins + 1;
            textBlockCoins.Text = "You Have " + Coins + "Coins";
        }
    }
}

在按下空格键时,您仍然必须确保正确的控件具有焦点。

在表单上将KeyPreview设置为true,您将捕获它们:


为什么需要变量?直接与
Key.Space
进行比较,然后使用调试器找出您在
e.KeyValue
中得到的键。是否实际调用了KeyDown事件回调?确保正确的控件具有焦点(首先,单击textBlockCoins)以接收KeyDown事件。在
if
上放置一个断点,查看e.KeyValue的实际值!
textBlockCoins\u按键是否触发?