Una delle lacune che credo tutti abbiamo notato usando il Framework.net 1.0 o 1.1 è che non era stata inserita all'interno di .NET una classe per poter emettere un suono, pertanto era necessario ricorrere ad un wrapper per una API oppure ad accrocchi che utilizzavano Media Player o altro.
Nel Framework 2.0 e successivi, per quelle che sono le esigenze di base di un programmatore, che può aver bisogno di avvisare con un suono del termine di una elaborazione oppure ricordare qualcosa all'utente o avvisare di un errore senza usare solo le messagebox, è stata introdotta la classe SoundPlayer, che pure essendo limitata a dover suonare solo files di tipo WAV, permette di suonare un file posto su disco oppure un file inserito come risorsa all'interno di un assembly .NET.
Il codice per fare tutto questo è molto semplice:
In C#
private const string TXT_Notifica = "xfiles.wav";
///<summary>
/// Evento che viene generato al click del bottone suono da file
///</summary>
/// <param name="sender">Oggetto che ha scatenato l'evento</param>
/// <param name="e">Argomenti relativi all'evento</param>
///<remarks>
//</remarks>
private void btnSoundfromFile_Click(object sender, EventArgs e)
{
SoundPlayer snd = new SoundPlayer(TXT_Notifica);
snd.Play();
}
///<summary>
/// Evento che viene generato al click del bottone suono da risorsa
///</summary>
/// <param name="sender">Oggetto che ha scatenato l'evento</param>
/// <param name="e">Argomenti relativi all'evento</param>
///<remarks>
///</remarks>
private void btnSoundfromresource_Click(object sender, EventArgs e)
{
SoundPlayer snd = new SoundPlayer(Properties.Resources.notifica);
snd.Play();
}
In VB
Private Const TXT_Notifica As String = "xfiles.wav"
'''<summary>
''' Evento che viene generato al click del bottone suono da file
'''</summary>
''' <param name="sender">Oggetto che ha scatenato l'evento</param>
''' <param name="e">Argomenti relativi all'evento</param>
'''<remarks>
'''</remarks>
Private Sub btnSoundfromFile_Click(ByVal sender As Object,
ByVal e As EventArgs) Handles btnSoundfromFile.Click
Dim snd As New SoundPlayer(TXT_Notifica)
snd.Play()
End Sub
'''<summary>
''' Evento che viene generato al click del bottone suono da risorsa
'''</summary>
''' <param name="sender">Oggetto che ha scatenato l'evento</param>
''' <param name="e">Argomenti relativi all'evento</param>
'''<remarks>
'''</remarks>
Private Sub btnSoundfromresource_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles btnSoundFromresource.Click
Dim snd As New SoundPlayer(my.Resources.notifica)
snd.Play()
End Sub
Il file WAV deve essere inserito nelle risorse di progetto utilizzando
add existing file
dal menu del file Resources.resx fornito dall'assembly.
Il progettino di test completo con la form ed i suoni, lo trovate in area risorse DotNetWork sotto la voce Blog Code - Come suonare un file WAV in VB o C#
Tags: suoni, SoundPlayer>, classi