So spielen Sie einen Sound in C #, .NET


124

Ich habe eine Windows-Anwendung in C # /. NET geschrieben.

Wie kann ich einen bestimmten Sound abspielen, wenn auf eine Schaltfläche geklickt wird?

Antworten:


233

Du könntest benutzen:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav");
player.Play();

32
Dies ist die perfekte Antwort, da ein neuer Benutzer verstehen kann, dass SoundPlayer zu System.Media gehört ....
Khilen Maniyar

30
@Ali ... stackoverflow.com/questions/2361857/what-does-means-in-c-sharp " Dies bedeutet, dass die folgende Zeichenfolge als Literal interpretiert wird. Das heißt, das \ in der Zeichenfolge ist tatsächlich ein" \ "in der Ausgabe, anstatt "\\" setzen zu müssen, um das wörtliche Zeichen zu bedeuten "
Praveen

@ Praveens Antwort gab nur eine weitere informative Tatsache. Vielen Dank an Dexter für das "@" -Symbol.
Allen Linatoc

2
@bporter, dies scheint nicht mit MP3-Dateien zu funktionieren; es ist nur auf das WAV-Format beschränkt
Najeeb

Was für eine Schande diese API! Es werden weder MP3- noch MIDI-Dateien abgespielt. Völlig nutzlos für mich. Windows bietet seit mindestens Windows XP native Unterstützung für MP3 und MIDI. Schade um Microsoft!
Elmue

91

Sie können beispielsweise SystemSound verwendenSystem.Media.SystemSounds.Asterisk.Play(); .


sehr hilfreich. Es kann hilfreich sein, die Systemstandards zu verwenden.
Babak.Abad

4
Es ist wichtig zu beachten, dass beim Deaktivieren von Systemtönen in den Windows-Einstellungen (zumindest neueren Windows) nichts abgespielt wird.
Artholl

32

Für Windows Forms besteht eine Möglichkeit darin, die zu verwenden SoundPlayer

private void Button_Click(object sender, EventArgs e)
{
    using (var soundPlayer = new SoundPlayer(@"c:\Windows\Media\chimes.wav")) {
        soundPlayer.Play(); // can also use soundPlayer.PlaySync()
    }
}

MSDN-Seite

Dies funktioniert auch mit WPF, Sie haben jedoch andere Optionen wie die Verwendung der MediaPlayer MSDN-Seite


1
Noch besser ist es, wenn Sie den Produktionscode nur einmal erstellen und mehrmals verwenden, anstatt ihn jedes Mal zu erstellen, wenn die Taste gedrückt wird.
Shibumi

Ich würde diese Funktion in umbenennen ButtonClick, einfach weil es so aussieht, als ob sie dem Stil der C # -Nennung mehr folgt.
Ethan Bierlein

1
@ EthanBierlein - es war wahrscheinlich die Namenskonvention, als ich die Antwort veröffentlichte;)
ChrisF

1
Huh. Das war also die alte Konvention?
Ethan Bierlein

@EthanBierlein es ist immer noch das, was von Visual Studios Windows Forms-Projekten automatisch generiert wird
JAD

13

Zusätzliche Information.

Dies ist eine allgemeine Antwort für Anwendungen, die sich nahtlos in die Windows-Umgebung einfügen möchten. Technische Details zum Spielen eines bestimmten Sounds wurden in anderen Antworten angegeben. Beachten Sie außerdem immer diese beiden Punkte:

  1. Verwenden Sie in typischen Szenarien fünf Standardsystem-Sounds , z

    • Sternchen - Spielen, wenn Sie das aktuelle Ereignis hervorheben möchten

    • Frage - Spielen Sie mit Fragen (das Fenster des Systemnachrichtenfelds spielt dieses ab)

    • Ausrufezeichen - Spielen Sie mit dem Ausrufezeichen-Symbol (das Fenster des Systemmeldungsfelds spielt dieses ab).

    • Piepton (Standard-Systemton)

    • Kritischer Stopp ("Hand") - Spiel mit Fehler (Systemmeldungsfeldfenster spielt dieses ab)
       

    Unterrichtsmethoden System.Media.SystemSoundsspielen sie für Sie.
     

  2. Implementieren Sie alle anderen Geräusche als kundengerecht von den Benutzern in Ton Bedienfeld

    • Auf diese Weise können Benutzer Sounds einfach in Ihrer Anwendung ändern oder entfernen, und Sie müssen dafür keine Benutzeroberfläche schreiben - sie ist bereits vorhanden
    • Jedes Benutzerprofil kann diese Sounds auf seine Weise überschreiben
    • Wie man:
      • Erstellen Sie ein Soundprofil Ihrer Anwendung in der Windows-Registrierung (Hinweis: Keine Programmierung erforderlich, fügen Sie einfach die Schlüssel zum Installationsprogramm Ihrer Anwendung hinzu.)
      • Lesen Sie in Ihrer Anwendung den Sounddateipfad oder die DLL-Ressource aus Ihren Registrierungsschlüsseln und spielen Sie sie ab. (Wie man Sounds spielt, sehen Sie in anderen Antworten.)

Vielen Dank für diese zusätzlichen Informationen. Ich möchte ein Beispiel hinzufügen: System.Media.SystemSounds.Hand.Play(); Thread.Sleep(2000);spielt den Sound Hand . Beachten Sie, dass es asynchron abgespielt wird. Hier habe ich einen Sleep-Befehl hinzugefügt, um auf die Fertigstellung des Sounds zu warten. Wenn Sie nicht warten und einen anderen Sound abspielen, stoppt der vorherige sofort.
Matt


2

Um eine Audiodatei in Windows-Form mit C # abzuspielen, überprüfen wir das einfache Beispiel wie folgt:

1. Gehen Sie zu Visual Studio (VS-2008/2010/2012) -> Menü Datei -> klicken Sie auf Neues Projekt.

2. Klicken Sie im neuen Projekt -> auf Windows Forms-Anwendung -> Name angeben und dann auf OK.

Ein neues "Windows Forms" -Projekt wird geöffnet.

3. Ziehen Sie ein Button-Steuerelement per Drag & Drop aus der Toolbox in Windows Form.

4.Doppeln Sie auf die Schaltfläche, um automatisch den Standard-Click-Ereignishandler zu erstellen, und fügen Sie den folgenden Code hinzu.

Dieser Code zeigt das Dialogfeld "Datei öffnen" an und übergibt die Ergebnisse an eine Methode namens "playSound", die Sie im nächsten Schritt erstellen werden.

 OpenFileDialog dialog = new OpenFileDialog();
 dialog.Filter = "Audio Files (.wav)|*.wav";


if(dialog.ShowDialog() == DialogResult.OK)
{
  string path = dialog.FileName;
  playSound(path);
}

5. Fügen Sie den folgenden Methodencode unter dem Ereignishander button1_Click hinzu.

 private void playSound(string path)
 {
   System.Media.SoundPlayer player = new System.Media.SoundPlayer();
   player.SoundLocation = path;
   player.Load();
   player.Play();
 }

6. Lassen Sie uns jetzt die Anwendung ausführen, indem Sie einfach F5 drücken, um den Code auszuführen.

7.Klicken Sie auf die Schaltfläche und wählen Sie eine Audiodatei aus. Nach dem Laden der Datei wird der Sound abgespielt.

Ich hoffe, dies ist ein nützliches Beispiel für Anfänger ...


1

Ich denke, Sie müssen zuerst eine WAV-Datei zu Ressourcen hinzufügen. Zum Beispiel haben Sie eine Sounddatei mit dem Namen Sound.wav. Nachdem Sie die Datei Sound.wav zu Resources hinzugefügt haben, können Sie diesen Code verwenden:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources.Sound);
player.Play();

Dies ist eine weitere Möglichkeit, Sound abzuspielen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.