У меня есть этот прослушиватель событий, используя WPF и C#. То, что я делаю, это просто изменение цвета определенных кнопок. Я меняю цвет одного, а затем перехожу к следующему. Проблема в том, что я пытаюсь сделать ее интерактивной и изменить цвет, используя разные времена, в зависимости от значения ползунка, который у меня есть в моем XAML. Проблема в том, что когда я перезапускаю игру более 3 раз, таймер начинает игнорировать значения ползунка, а цвета кнопок меняются с помощью шаблона, который не соответствует тому, что на слайдере. Любые предложения?dispatcherTimer не работает в WPF
private void Restart_Click(object sender, RoutedEventArgs e)
{
SnackBoxes = 2;
theBabies[0] = new Baby();
theBabies[1] = new Baby();
theBabies[2] = new Baby();
theBabies[3] = new Baby();
theBabies[4] = new Baby();
theBabies[5] = new Baby();
theBabies[6] = new Baby();
theBabies[7] = new Baby();
theBabies[8] = new Baby();
theBabies[9] = new Baby();
resetBabies();
dispatcherTimer1 = new DispatcherTimer();
int timeSlider = (int)(11 - theSlider.Value);
MessageBox.Show(""+timeSlider);
dispatcherTimer1.Interval = TimeSpan.FromSeconds(timeSlider);
dispatcherTimer1.Tick += delegate
{
int nextBabyRed = nextBabyToTurnRed(theBabies);
switch (nextBabyRed)
{
case 0:
Baby1.Background = Brushes.Red;
theBabies[0].Happy = false;
break;
case 1:
Baby2.Background = Brushes.Red;
theBabies[1].Happy = false;
break;
case 2:
Baby3.Background = Brushes.Red;
theBabies[2].Happy = false;
break;
case 3:
Baby4.Background = Brushes.Red;
theBabies[3].Happy = false;
break;
case 4:
Baby5.Background = Brushes.Red;
theBabies[4].Happy = false;
break;
case 5:
Baby6.Background = Brushes.Red;
theBabies[5].Happy = false;
break;
case 6:
Baby7.Background = Brushes.Red;
theBabies[6].Happy = false;
break;
case 7:
Baby8.Background = Brushes.Red;
theBabies[7].Happy = false;
break;
case 8:
Baby9.Background = Brushes.Red;
theBabies[8].Happy = false;
break;
case 9:
Baby10.Background = Brushes.Red;
theBabies[9].Happy = false;
break;
default:
Console.WriteLine("Default case");
break;
}
//dispatcherTimer1.Stop();
};
dispatcherTimer1.Start();
//MessageBox.Show(""+theSlider.Value);
}
}