0

我正在尝试为我的最后一个项目介绍编程的二进制时钟发出警报。

我已经制作了控件,具有 intAlarmHour 和 intAlarmMinute 值。我发现了一些关于在 C# 中播放声音的文章,但代码对我来说不太适用。到目前为止,这是我在 timer1 下所拥有的:

if (DateTime.Now.Hour == intAlarmHour && DateTime.Now.Minute == intAlarmMinute)
        System.Media.SoundPlayer sound = new System.Media.SoundPlayer(//unknown format);
sound.PlaySync();

我越来越

错误 1 ​​嵌入式语句不能是声明或标记语句 C:\ADixon\Final\Binary Project\BinaryClock\BinaryClock\Form1.cs 551 13 BinaryClock

错误 2 使用未分配的局部变量 'sound' C:\ADixon\Final\Binary Project\BinaryClock\BinaryClock\Form1.cs 552 1 BinaryClock

我对声音文件的格式也不是 100%。我假设我将它放入项目中的系统资源中并像图片一样链接到它?它是什么,form1.system.resources.file ?

如果我使用 System.Media.SoundPlayer 方法,允许哪些文件类型?我可以使用 .mp3 吗?

谢谢你的帮助!

4

2 回答 2

0

您的第一个问题是“缺少花括号”。没有大括号的“If”语句只会运行它后面的下一行。因此,在您的情况下,因为“声音”声明是有条件的并且包含在“if”语句中,所以您的“sound.Play()”是未分配的。

应该:

if (DateTime.Now.Hour == intAlarmHour && DateTime.Now.Minute == intAlarmMinute)
{
     System.Media.SoundPlayer sound = new System.Media.SoundPlayer(//unknown format);
     sound.PlaySync();
}
于 2013-11-04T03:24:19.027 回答
0

您需要使用 .wav 文件。您可以将其设为嵌入式资源,这意味着它将捆绑在 exe 本身中。

单击项目 --> 属性 --> 资源选项卡 --> 添加资源 --> 添加现有文件 --> 双击 .wav 文件。在属性窗格(右下角)中,将“持久性”更改为“嵌入 .resx”。

现在你可以使用这样的代码来播放声音:

        // where "buzzer" below will be the name of the .wav YOU added:
        System.Media.SoundPlayer sound = new System.Media.SoundPlayer(Properties.Resources.buzzer);
        sound.Play();
于 2013-11-04T04:00:04.697 回答