我想在按键关闭时用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!");
}
答案 0 :(得分:1)
您可以通过KeyDown和KeyUp事件处理此问题。为此,两个事件都需要知道您的媒体对象和播放状态。可能还有其他可能性我不知道。我用这个senerio进行播放和录音。你可以尝试只玩。
其次,即使在媒体结束或失败后,如果按键被紧急按下,您也需要重置。因此,您需要注册这些事件并执行与在KeyUP事件中执行的操作相同的操作。
下面的示例显示了Application Window的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;
}
答案 1 :(得分: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;
}
}