1
У меня есть этот кусок кода:Невозможно воспроизвести полный звук
MediaPlayer player = new System.Windows.Media.MediaPlayer();
bool playing = false;
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1)
{
if (label5.Text == "Waiting 01.wav")
{
MessageBox.Show("No wav loaded");
return;
}
pictureBox6.Image = Form1.Properties.Resources.white_square_button;
try
{
player.Open(new Uri(label37.Text));
player.Volume = (double)trackBar4.Value/100;
playing = true;
player.Play();
}
catch (FileNotFoundException)
{
MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!");
}
}
}
private void Window_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1)
{
pictureBox6.Image = Form1.Properties.Resources.black_square_button;
player.Stop();
player.Close();
playing = false;
}
}
Проблема заключается в том, что файл .wav не будет играть полный только часть его.
Он должен воспроизводиться в полном объеме, когда клавиша D1 нажата до тех пор, пока она не будет отпущена.
Что я делаю неправильно?
Он бросает мне ошибку: Ошибка \t \t 2 «System.Windows.Forms.KeyEventArgs» не содержит определение понятия «IsRepeat» – Joscplan
плз помогите мне исправить эту ошибку. – Joscplan
Какую версию CLR вы используете? e.IsRepeat работает корректно с CLR4.0, но не может быть в других средах. Основная идея заключается в том, что звук воспроизводится в ближайшее время, потому что повтор клавиш повторяется снова и снова, когда клавиша удерживается. Каждый раз, когда он начинает воспроизводить звук. Попробуйте добавить флаг, т. Е.: Bool _bKeyIsDown = false; protected override void OnKeyDown (KeyEventArgs e) { if (_bIsDown) return; _bIsDown = true; // воспроизведение звука; base.OnKeyDown (e); } защищенная переопределенная пустота OnKeyUp (KeyEventArgs e) { base.OnKeyUp (e); _bIsDown = false; } – SpeedCoder5