我知道有很多与此主题相关的主题,但是由于某种原因我还不了解,所以这对我来说不起作用。

我有这个项目树:

我从Project-> Properties-> Resources菜单中将alarm.wav嵌入到.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

最佳答案

当您可以使用resources.GetStream()直接链接文件时,为什么要尝试使用Alarm.Properties?我相信这会容易得多。我发现您也忘记播放链接到sonido的声音文件,该文件代表一个新的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的void的静态的SoundPlayer是在public partial class Form1: Form下定义的,表示sonido的新类的名称是ojit_code。

谢谢,
我希望这个对你有用 :)

09-27 01:32