J'ai une application Windows écrite en C#/.NET.
Comment puis-je jouer un son spécifique lorsqu'un bouton est cliqué ?
J'ai une application Windows écrite en C#/.NET.
Comment puis-je jouer un son spécifique lorsqu'un bouton est cliqué ?
Cette réponse est parfaite car un nouvel utilisateur peut comprendre que SoundPlayer appartient à System.Media.....
@Ali... stackoverflow.com/questions/2361857/what-does-means-in-c-sharp "Cela signifie interpréter la chaîne suivante comme littérale. Autrement dit, le "\" de la chaîne sera réellement un "\" dans la sortie, plutôt que d'avoir à mettre " \\ " pour signifier le caractère littéral "
La réponse de @Praveen vient de donner un autre fait instructif. Merci à Dexter d'avoir posé ce symbole "@".
Vous pouvez utiliser SystèmeSound par exemple, System.Media.SystemSounds.Asterisk.Play();
.
Pour Windows Forms, une solution consiste à utiliser la fonction 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()
}
}
Cela fonctionnera également avec WPF, mais vous avez d'autres options comme l'utilisation de MediaPlayer
Page MSDN
Mieux encore, dans le code de production, créez-la une seule fois et utilisez-la plusieurs fois plutôt que de la créer à chaque fois que le bouton est pressé.
Je renommerais cette fonction en ButtonClick
Il s'agit simplement d'un style plus proche de celui de la dénomination C#.
@EthanBierlein - c'était probablement la convention de dénomination lorsque j'ai posté la réponse ;)
Il s'agit d'une réponse de haut niveau pour les applications qui veulent s'intégrer de façon transparente dans l'environnement Windows. Les détails techniques de l'interprétation d'un son particulier ont été fournis dans d'autres réponses. En outre, notez toujours ces deux points :
Utilisez cinq sons standard du système dans des scénarios typiques c'est-à-dire
Astérisque - à jouer lorsque vous voulez mettre en évidence l'événement en cours
Question - jouer avec les questions (la fenêtre de la boîte à messages du système joue celle-ci)
Exclamation - jouer avec l'icône d'excalamation (la fenêtre de la boîte à messages du système joue celle-ci)
Bip (son système par défaut)
Arrêt critique ("Hand") - jouer avec l'erreur (la fenêtre de la boîte de messages du système joue celle-ci)
Méthodes de la classe System.Media.SystemSounds
les jouera pour vous.
Mettez en œuvre tout autre son personnalisable par vos utilisateurs en Son panneau de contrôle
Merci pour ces informations supplémentaires. J'aimerais ajouter un exemple : System.Media.SystemSounds.Hand.Play(); Thread.Sleep(2000);
joue le son Main . Notez qu'il joue de manière asynchrone, ici j'ai ajouté une commande sleep pour attendre la fin du son. Si vous n'attendez pas, et jouez un autre son, le précédent s'arrête immédiatement.
@Matt - merci de partager. Le problème possible (bien qu'improbable) est qu'un utilisateur change son nom de domaine. Main son (comme indiqué au point 2 ci-dessus) par exemple à un son de 3 secondes et dans ce cas, leur nouveau son sera arrêté après 2 secondes.
C'est vrai, vous ne pouvez pas savoir combien de temps le son doit être joué. Ce serait génial si cela pouvait être interrogé d'une manière ou d'une autre, ou s'il y avait une méthode synchrone attendant que le son soit joué jusqu'à la fin. I J'ai trouvé une autre question traitant de ce sujet. Dans une des réponses, il est décrit comment vous pouvez obtenir un intervalle de temps, avec lequel vous pouvez déterminer combien de millisecondes le paramètre thread.sleep devrait être.
Le code ci-dessous permet de lire les fichiers mp3 et les fichiers wave en mémoire.
player.FileName = "123.mp3";
player.Play();
de http://alvas.net/alvas.audio,samples.aspx#sample6 ou
Player pl = new Player();
byte[] arr = File.ReadAllBytes(@"in.wav");
pl.Play(arr);
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.