2

我知道有很多关于同一主题的主题,但由于我还不明白的原因,这对我不起作用。

我有这个项目树:

项目树

我从 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 时发现的错误

Alarm.Properties 错误

4

1 回答 1

2

您为什么要尝试使用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()因为如果尝试调用的 void是静态的,则它表示在下定义sonido了一个新的名称类。SoundPlayerpublic partial class Form1: Formsonido

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

于 2012-11-02T01:00:41.853 回答