C# 按键按下时播放声音
我想在按键按下时播放C#音。如果松开钥匙,声音会自动停止 这就是我到目前为止所做的:C# 按键按下时播放声音,c#,soundplayer,C#,Soundplayer,我想在按键按下时播放C#音。如果松开钥匙,声音会自动停止 这就是我到目前为止所做的: var player = new System.Windows.Media.MediaPlayer(); try { player.Open(new Uri(label46.Text)); player.Volume = (double)trackBar4.Value / 100; player.Play(); } catc
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!");
}
这个类在键盘改变状态时触发事件,您可以订阅这些事件,然后检查所按下的键是否是您想要的键
例如,在KeyDown事件中,检查他们的密钥是否为“p”或其他,如果是,则播放文件。在KeyUp事件中,检查它们的密钥是否相同,然后停止播放文件
这个例子并不完全是您需要的,但它应该让您开始:
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
textBlock1.Text = "You Entered: " + textBox1.Text;
}
}
您可以通过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;
}
我建议将
player
对象保留在附近,当按键按下时,只需调用.Play()
。这样,您就不必每次都打开文件。问题是我使用了很多声音文件,所以是的。所以,当按下任何键或特定键时?按键向下事件按预期工作,但按键向上不会工作:私有无效窗口\u键向上(对象发送器,KeyEventArgs e){if(playing==false){return;}如果(e.KeyCode==Keys.D1){pictureBox6.Image=Beatpadpc.Properties.Resources.black_square_按钮;player.Stop();player.Close();playing=false;}