0

キーが押されている間、C# でサウンドを再生したいと考えています。キーを離すと、音は自動的に止まります。

これは私がこれまでに持っているものです:

    var player = new System.Windows.Media.MediaPlayer();
    try
    {
        player.Open(new Uri(label46.Text));
        player.Volume = (double)trackBar4.Value / 100;
        player.Play();
    }
    catch (FileNotFoundException)
    {
        MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!");
    }
4

2 に答える 2

1

これは、KeyDown および KeyUp イベントを通じて処理できます。このためには、両方のイベントがメディア オブジェクトと再生ステータスを認識する必要があります。私が気づいていない他の可能性があるかもしれません。私はこのセネリオを演奏と録音に使用しました。遊ぶだけでも構いません。

次に、メディアが終了または失敗した後でもキーが連続して押された場合もリセットする必要があります。したがって、これらのイベントを登録し、KeyUP イベントと同じアクションを実行する必要があります。

以下の例は、アプリケーション ウィンドウの KeyUP および KeyDown イベントを示しています。

MediaPlayer player = new System.Windows.Media.MediaPlayer();
bool playing = false;

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (playing == true)
    {
        return;
    }

    /* your code follows */
    try
    {
        player.Open(new Uri(label46.Text));
        player.Volume = (double)trackBar4.Value / 100;
        player.Play();
        playing = true;
    }
    catch (FileNotFoundException)
    {
        MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!");
    }
}

private void Window_KeyUp(object sender, KeyEventArgs e)
{
    if (playing == false)
    {
        return;
    }

    /* below code you need to copy to your Media Ended/Media Failed events */
    player.Stop();
    player.Close();
    playing = false;
}
于 2013-05-23T01:56:13.457 に答える
0

http://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.aspx

このクラスは、キーボードの状態が変化したときにイベントを発生させます。イベントをサブスクライブして、押されたキーが必要なキーであるかどうかを確認できます。

たとえば、KeyDown イベントで、キーが「P」かどうかを確認します。そうであれば、ファイルを再生します。KeyUp イベントで、それらのキーが同じキーであるかどうかを確認してから、ファイルの再生を停止します。

この例はまさに必要なものではありませんが、開始する必要があります。

private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        textBlock1.Text = "You Entered: " + textBox1.Text;
    }
}
于 2013-05-22T22:40:07.690 に答える