从应用程序播放声音

时间:2015-08-09 08:52:22

标签: c# visual-studio-2013 playsound

我在C#做了一个小的2D游戏。我想添加声音。在YouTube观看视频后,我输入了以下代码但未运行:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Media;
namespace Test_Sound
{
    public partial class Form1 : Form
    {
        private SoundPlayer sound;
        public Form1()
        {
            sound = new SoundPlayer("3G.wav");
            InitializeComponent();
        }

        private void checkBox_CheckedChanged(object sender, EventArgs e)
        {
            if(checkBox.Checked)
            {
                checkBox.Text = "Stop";
                sound.Play();
            }
            else
            {
                    checkBox.Text = "Play";
                    sound.Stop();   
            }
        }
    }
}

Visual Studio显示以下错误:

  

行:27错误1' System.Windows.Forms.CheckBox'不包含' Play'的定义没有扩展方法' Play'接受类型' System.Windows.Forms.CheckBox'的第一个参数。可以找到(您是否缺少using指令或程序集引用?)c:\ users \ hp \ documents \ visual studio 2013 \ Projects \ Test_Sound \ Form1.cs

     

第32行:错误2' System.Windows.Forms.CheckBox'不包含'停止'的定义没有延伸方法'停止'接受类型' System.Windows.Forms.CheckBox'的第一个参数。可以找到(您是否缺少using指令或程序集引用?)c:\ users \ hp \ documents \ visual studio 2013 \ Projects \ Test_Sound \ Form1.cs

任何人都可以帮我修复错误吗?

视频链接为Play Sounds in Windows Forms App (C# .NET)

我已修复该错误。但现在我有例外。 Visual Basic在第27行显示以下异常消息。 下面给出了异常消息:

未处理的类型' System.InvalidOperationException'发生在System.dll

其他信息:Sound API仅支持播放PCM wave文件。 我从互联网上下载了一个PCM波形文件并用它替换了现有的文件。但它没有用。

1 个答案:

答案 0 :(得分:1)

Play()Stop()是您在sound初始化之前声明的Form1()方法。

您的代码必须是:

 private void checkBox_CheckedChanged(object sender, EventArgs e)
 {
     if(checkBox.Checked)
     {
         checkBox.Text = "Stop";
         sound.Play();
     }
     else
     {
         checkBox.Text = "Play";
         sound.Stop();
     }
}

请参阅:
- http://www.dotnetperls.com/soundplayer
- https://msdn.microsoft.com/en-us/library/System.Media.SoundPlayer_methods(v=vs.110).aspx

关于您的新例外,PCM(脉冲编码调制 - https://en.wikipedia.org/wiki/Pulse-code_modulation)是System.Media.SoundPlayer类支持的唯一一个。它是最常见的WAV格式,因此大多数.WAV文件都能正常工作。

有一些工具可以转换音频文件。例如,Switch Audio(http://www.nch.com.au/switch/)可以在格式之间进行转换(即使在免费版本中)。您需要将文件转换为标准的PCM编码WAV文件。