改善代码: string[] musics = new[] { @"\Alarm\Alarm01.wav ", @"\Alarm\Alarm02.wav ", @"\Alarm\Alarm03.wav ", @"\Alarm\Alarm04.wav ", @"\Alarm\Alarm05.wav ", @"\Alarm\Alarm06.wav ",@"\Alarm\Alarm07.wav ", @"\Alarm\Alarm08.wav ", @"\Alarm\Alarm09.wav ", @"\Alarm\Alarm10.wav "}; private MediaPlayer mediaPlayer = new MediaPlayer(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string[] musics = new[] { "编钟", "和弦", "木琴", "和弦", "滴答", "叮当", "过渡", "下降", "弹跳", "回声" }; for (int i = 0; i < musics.GetLength(0); i++) { m_music.Items.Add(musics[i]); } m_music.Text = "编钟"; } private void PlayButton_Click(object sender, RoutedEventArgs e) { // 播放音乐 mediaPlayer.Play(); } private void PauseButton_Click(object sender, RoutedEventArgs e) { // 暂停音乐 mediaPlayer.Pause(); } private void StopButton_Click(object sender, RoutedEventArgs e) { // 停止音乐 mediaPlayer.Stop(); }
时间: 2024-02-14 18:22:10 浏览: 133
改善后的代码:
string[] musics = { "编钟", "和弦", "木琴", "和弦", "滴答", "叮当", "过渡", "下降", "弹跳", "回声" };
private readonly MediaPlayer mediaPlayer = new MediaPlayer();
public Form1()
{
InitializeComponent();
foreach (string music in musics)
{
m_music.Items.Add(music);
}
m_music.Text = "编钟";
}
private void PlayButton_Click(object sender, EventArgs e)
{
if (mediaPlayer.Source != null)
{
mediaPlayer.Play();
}
else
{
string selectedMusic = m_music.SelectedItem.ToString();
string musicPath = $@"\Alarm\{selectedMusic}.wav";
mediaPlayer.Open(new Uri(musicPath, UriKind.Relative));
mediaPlayer.Play();
}
}
private void PauseButton_Click(object sender, EventArgs e)
{
mediaPlayer.Pause();
}
private void StopButton_Click(object sender, EventArgs e)
{
mediaPlayer.Stop();
}
改善说明:
1. 删除了重复的 musics 数组,并将其放在了 Form1 构造函数中初始化。
2. 将 MediaPlayer 对象定义为只读字段,并在需要使用时直接调用。
3. 使用 foreach 循环遍历 musics 数组,将其添加到 m_music 列表框中。
4. 在 PlayButton_Click 中,做了如下改进:
- 如果 mediaPlayer 已经有了 Source,直接调用 mediaPlayer.Play() 方法即可,否则进行下一步操作。
- 从 m_music 中获取用户选择的音乐名称,拼接出完整的音乐文件路径。
- 使用 mediaPlayer.Open 方法打开音乐文件,并立即调用 mediaPlayer.Play() 方法播放音乐。
5. 没有做大量的错误处理,但是在代码中添加了一些基本的错误检查和处理,以确保代码的可靠性和健壮性。
阅读全文