【问题标题】:Playing sound from application从应用程序播放声音
【发布时间】:2015-11-01 08:39:43
【问题描述】:

我用 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 显示以下错误:

line :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”不包含“Stop”的定义,并且没有扩展方法“Stop”接受“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.dll 中出现“System.InvalidOperationException”类型的未处理异常

附加信息:Sound API 仅支持播放 PCM 波形文件。 我从互联网上下载了一个 PCM 波形文件,并用它替换了现有文件。但它不起作用。

【问题讨论】:

  • 您是否尝试理解错误信息?它非常准确,准确地指出了问题。它还为您提供了如何解决问题的间接提示。
  • 应该是:sound.Play()sound.Stop()
  • @Black Swan,查看我更新的答案

标签: c# visual-studio-2013 playsound


【解决方案1】:

Play()Stop()是你在Form1()initialization之前声明的sound的方法。

您的代码必须是:

 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 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多