计时器刻度事件,不会被其他功能打断?

时间:2013-03-10 22:37:30

标签: c# events timer

所以这是一本我正在学习的书中的游戏。

private void timer1_Tick(object sender, EventArgs e)
{
    listBox1.Items.Add((Keys)random.Next(65, 90));

    if (listBox1.Items.Count > 7)
    {
        listBox1.Items.Clear();
        listBox1.Items.Add("Game over");
        timer1.Stop();
    }
}

private void Form1_KeyDown(object sender, KeyEventArgs e)
{

    if (listBox1.Items.Contains(e.KeyCode))
    {
        listBox1.Items.Remove(e.KeyCode);
        listBox1.Refresh();
        if (timer1.Interval > 400)
            timer1.Interval -= 10;
        if (timer1.Interval > 250)
            timer1.Interval -= 7;
        if (timer1.Interval > 100)
            timer1.Interval -= 2;
        difficultyProgressBar.Value = 800 - timer1.Interval;
        stats.Update(true);
    }

    else
    {
        stats.Update(false);
    }
    correctLabel.Text = "Correct: " + stats.Correct;
    missedLabel.Text = "Missed: " + stats.Missed;
    totalLabel.Text = "Total: " + stats.Total;
    accuracyLabel.Text = "Accuracy: " + stats.Accuracy + "%";
}

它生成随机字母,如果您按右侧字母,则必须从列表框中删除按下的字母。

问题是Form的keydown属性不起作用,它只突出显示按下的键,但它不会从列表框中删除它,循环继续直到列表框已满,并且它会给游戏提供消息然后..

我想知道这次我做错了什么,因为整个代码都取自本书?

1 个答案:

答案 0 :(得分:1)

我已经检查了我的代码和书籍,问题是他们的表格KeyPreview被设置为True,而我的不是,所以这是他们忘记在书上提到的答案。