2013-03-10 2 views
0

Итак, вот игра из книги, которую я изучал.событие таймера, не будет прервано другими функциями?

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 формы не будет работать, оно только подчеркивает нажатую клавишу, но не удаляет ее из списка, цикл продолжается до тех пор, пока список не будет заполнен, и тогда он получит сообщение о передаче. ..

Интересно, что я сделал на этот раз неправильно, так как весь код взят из самой книги?

+1

Вы добавили метод в качестве обработчика события для соответствующего события в форме? Кроме того, я бы подумал, что вместо этого нужно было бы предварять просмотрKeyDown, предполагая, что что-то другое, кроме формы, имеет фокус. – Servy

+0

Да, я добавил метод, просто попробовал previewKeyDown, он тоже не работал. – imdrunkisuppose

+0

Пробовали ли вы изолированное устранение неполадок? Я имею в виду использование события 'Form1_KeyDown' и просто использую' MessageBox.Show («ЗДЕСЬ»); 'или что-то похожее, чтобы убедиться, что событие запущено? – tmwoods

ответ

1

Я проверил как мой код, так и книги », проблема заключалась в том, что их формы были заданы как True, а мой не был, так что это был ответ, о котором они забывали упомянуть в книге, к сожалению.

Смежные вопросы