Нужно что бы выполнялся некоторой метод при зажатой(не нажатой, а именно зажатой) кнопке "A". А когда я ее отпускаю вызывался другой метод.
Есть вот такой код. Но почему то мелодия проигрывается всего 1 секунду, а потом останавливатся.
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.A)
{
PlaySound();
this.MyBotton.Background = Brushes.Black;
}
}
private void PlaySound()
{
wpalyer.URL = @"D:123.mp3";
wpalyer.controls.play();
}
private void Window_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.A)
{
wpalyer.controls.stop();
this.MyBotton.Background = Brushes.White;
}
}
Я бы посоветовал такой путь:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.A &&
!e.IsRepeat) // проверка на повторение
{
PlaySound();
this.MyBotton.Background = Brushes.Black;
}
}
Добавил булевскую переменную repeat для проверки. Так как раньше событие при зажатой "A" начинала зацикливаться.
WindowsMediaPlayer wpalyer = new WindowsMediaPlayer();
bool repeat = true;
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.A && repeat== true)
{
PlaySound();
this.MyBotton.Background = Brushes.Black;
Debug.WriteLine("что-то");
repeat = false;
}
}
private void PlaySound()
{
wpalyer.URL = @"D:\123.mp3";
wpalyer.controls.play();
}
private void Window_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.A)
{
wpalyer.controls.stop();
this.MyBotton.Background = Brushes.White;
Debug.WriteLine("что-то из KeyUp");
repeat = true;
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей