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 事件来处理这个问题。为此,两个事件都需要知道您的媒体对象和播放状态。可能还有其他我不知道的可能性。我用这个 senerio 来播放和录音。你可以尝试只玩。

其次,即使在媒体结束或失败后,如果连续按下该键,您也需要重置。因此,您需要注册这些事件并执行与 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 回答