Form1_KeyDown不工作

时间:2013-05-21 06:43:31

标签: c# winforms

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (listBox1.Items.Contains(e.KeyCode))
    {
        listBox1.Items.Remove(e.KeyCode);
        listBox1.Refresh();
        timer1.Interval -= 10;
        difficultyProgessbar.Value = 800 - timer1.Interval;
        stats.update(true);
    }
    else
    {
        stats.update(false);
    }

    correctLabel.Text = stats.correct.ToString();
    missedLabel.Text = stats.missed.ToString();
    totalLabel.Text = stats.total.ToString();
    accuracyLabel.Text = stats.accuracy.ToString();

}

private void timer1_Tick(object sender, EventArgs e)
{
    //Add a random key to Listbox
    listBox1.Items.Add((Keys)random.Next(65, 90));
    Application.DoEvents();
    if (listBox1.Items.Count > 7)
    {
        listBox1.Items.Clear();
        listBox1.Items.Add("Game Over");
        timer1.Stop();
    }
}

当我运行我的应用程序时,timer1_Tick事件正常工作,但是当我按任意键时,Form1_KeyDown事件不会执行。 缺少什么?为什么Key_Down事件永远不会发生? 感谢

1 个答案:

答案 0 :(得分:5)

Keydown在Control with Focus中发射 要在表单级别接收它,您需要设置属性。表单的KeyPreview = True