我正在尝试创建一个动态创建按钮数量的C#
应用,每个按钮都有Click_Handler
,如果点击则会根据用户之前指定的文件播放声音。
使用这个简单的功能
,每个东西都在工作,所有的声音同时播放private void playSound (string path)
{
if (System.IO.File.Exists(path))
{
System.Windows.Media.MediaPlayer mp = new System.Windows.Media.MediaPlayer();
mp.Open(new System.Uri(path));
mp.Play();
}
}
现在每次用户点击任何按钮时,它都会使用MediaPlayer
对象的新实例开始播放声音
我的问题是如何获取对每个新创建的MediaPlayer
对象的引用,以便我可以操作它(停止,暂停,时间线......等)
答案 0 :(得分:1)
调用方法后返回实例:
private System.Windows.Media.MediaPlayer playSound (string path)
{
if (System.IO.File.Exists(path))
{
System.Windows.Media.MediaPlayer mp = new System.Windows.Media.MediaPlayer();
mp.Open(new System.Uri(path));
mp.Play();
return mp;
}
return null;
}
在您的调用代码中,在使用之前检查返回的对象是否为null:
var mp = playSound(@"d:\music\file.mp3");
if(mp != null)
{
//do something with mp
}
您还可以将此MediaPlayer对象保存在字典对象中,以便于操作。
Dictionary<string, System.Windows.Media.MediaPlayer> players = new Dictionary<string, System.Windows.Media.MediaPlayer>();
var mp = playSound(@"d:\music\file.mp3");
players.Add(btn.Text, mp); //Identifying media player by button text
// Later if a user press the button again and your default action is pause
if(players.ContainsKey(btn.Text))
players[btn.Text].Pause();