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 が押されると、離されるまで完全に再生されます。

私は何を間違っていますか?

4

1 に答える 1

1

KeyDown イベントが繰り返されています。1 つの解決策は、リピート キー ダウンの場合は、すぐに戻ることです。

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if(e.IsRepeat) return;
    // ...
于 2013-06-04T01:50:14.297 に答える