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 割り当てられていないローカル変数 'サウンド' の使用 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 ファイルをダブルクリックします。プロパティ ペイン (右下) で、"Persistence" を "Embedded in .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 に答える