在C#中嵌入声音

时间:2012-11-02 00:48:53

标签: c# visual-studio-2010 audio

我知道有很多线程都有同样的主题,但由于某种原因我还不明白,这对我不起作用。

我有这个项目树:

Project Tree

我将alarm.wav嵌入到Project-> Properties-> Resources菜单中的.resx文件中。

我尝试了不同的代码组合但没有任何效果。

目前这是我正在尝试的代码。

using System;
using System.Media;
using System.Windows.Forms;
using System.Threading;
using System.Globalization;
using System.ComponentModel;
using System.Resources;
using AlarmForm;

namespace Alarm
{
    public partial class Form1 : Form
    {
        private bool estado = false;
        private SoundPlayer sonido;

        public Form1()
        {
            InitializeComponent();
            ResourceManager resources = new ResourceManager(typeof(Form1));
            sonido = new SoundPlayer(resources.GetStream("alarma"));
        }
    }
}

在编译或运行时没有显示错误,但是听到声音而不是声音。

已编辑:错误我发现尝试使用Alarm.Properties

Alarm.Properties Error

1 个答案:

答案 0 :(得分:2)

为什么在使用resources.GetStream()直接链接文件时尝试使用Alarm.Properties?我相信它会容易得多。我发现您还忘记播放链接到代表新sonido的{​​{1}}的声音文件。这是一个简单的示例,展示了如何使用SoundPlayer

示例

SoundPlayer

请注意:您可以通过using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Resources; using System.Media; using AlarmForm. using AlarmForm.Properties; //Required to call 'Resources' directly namespace Alarm { public partial class Form1 : Form { private bool estado = false; private SoundPlayer sonido; public Form1() { InitializeComponent(); //ResourceManager resources = new ResourceManager(typeof(Form1)); //We do not actually need this sonido = new SoundPlayer(Resources.alarma); //Initialize a new SoundPlayer linked to our sound file (or Alarm.Properties.Resources.alarma if Alarm.Properties was not imported) sonido.Play(); //Required if you would like to play the file } } } SoundPlayer随时停止sonido.Stop()播放,sonido代表一个新的名称类SoundPlayer如果试图调用public partial class Form1: Form的空格是静态的,则在sonido下定义。

谢谢, 我希望你觉得这很有帮助:)