Итак, вот игра из книги, которую я изучал.событие таймера, не будет прервано другими функциями?
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 + "%";
}
Он генерирует случайные буквы, и если вы нажимаете правую букву, она должна удалить букву нажатой из списка.
Проблема заключается в том, что свойство keydown формы не будет работать, оно только подчеркивает нажатую клавишу, но не удаляет ее из списка, цикл продолжается до тех пор, пока список не будет заполнен, и тогда он получит сообщение о передаче. ..
Интересно, что я сделал на этот раз неправильно, так как весь код взят из самой книги?
Вы добавили метод в качестве обработчика события для соответствующего события в форме? Кроме того, я бы подумал, что вместо этого нужно было бы предварять просмотрKeyDown, предполагая, что что-то другое, кроме формы, имеет фокус. – Servy
Да, я добавил метод, просто попробовал previewKeyDown, он тоже не работал. – imdrunkisuppose
Пробовали ли вы изолированное устранение неполадок? Я имею в виду использование события 'Form1_KeyDown' и просто использую' MessageBox.Show («ЗДЕСЬ»); 'или что-то похожее, чтобы убедиться, что событие запущено? – tmwoods