Comumque il problema di fondo, oltre alla questione di codice, che come visto in un modo o nell' altro si risolve infatti almeno una delle 2 versioni dello stesso programma funge, è questo:

nella stesura di un listato in vb.net è più professionale utilizzzare gestori di eventi condivisi per i controlli che gestiscono eventi simili oppure no? o è indifferente? ( anche se indifferente non credo che sia) e... se si, cioè se è più professionale utilizzare i gestori di eventi è necessario utilizzare un unico gestore per tutti gli eventi che presentano gli stessi parametri?... come cercavo di fare con la seconda versione del programma?.. oppure si puo fare per categorie?... come per esempio nel codice sotto:

codice:
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TrackBar1.Value = (TrackBar1.Maximum + TrackBar1.Minimum) / 2
    End Sub

    Private Sub ComandiMenu(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) Handles EsciToolStripMenuItem.Click, _
                                                                 ApriToolStripMenuItem.Click
        If sender.Equals(EsciToolStripMenuItem) Then
            Application.Exit()
        ElseIf sender.Equals(ApriToolStripMenuItem) Then
            OpenFileDialog1.ShowDialog()
        End If
        Label2.Text = OpenFileDialog1.FileName
    End Sub

    Private Sub Pulsanti(ByVal sender As System.Object, _
                         ByVal e As System.EventArgs) Handles Button1.Click, _
                                                              Button2.Click, _
                                                              Button3.Click
        If sender.Equals(Button1) Then
            Class1.A.Open(OpenFileDialog1.FileName)
            Class1.A.Play()
        ElseIf sender.Equals(Button2) Then
            Class1.A.Pause()
        ElseIf sender.Equals(Button3) Then
            Class1.A.Stop()
        End If
    End Sub

    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        TrackBar1.TickFrequency = 1
        TrackBar1.SmallChange = 10
        TrackBar1.LargeChange = 10
        TrackBar1.Minimum = -3000
        TrackBar1.Maximum = 0
        If TrackBar1.Value <> TrackBar1.Minimum Then
            Try
                Class1.A.Volume = TrackBar1.Value
            Catch ex As Exception
                Class1.A.Volume = TrackBar1.Minimum
            End Try
        End If
        Label1.Text = TrackBar1.Value
    End Sub

End Class
?????????????????????????????????????????????????? ???????????????????

p.s. ahh nella seconda versione del programma, quello che funziona, se dopo si sceglie un altro file riproduce sempre quello di prima; per poter cambiare file da ascoltare aggiungere questo rigo

Class1.A.Open(OpenFileDialog1.FileName)

nell' evento ApriToolStripMenuItem

praticamente subito prima del rigo

Class1.A.Play()

Quest' ultima versione del programma funziona correttamente, almeno riguardo a quell' aspetto.

Devo ancora risolvere qualche piccolo problemino come pre esempio una eccezione che avviene se cerco di muovere la TrackBar prima di aver selezionato un file. Succerimenti a riguardo??

GRAZIE DELL' ATTENZIONE

p.s. se volete provare quest' ultimo codice aggiungete una Labe2 nel form per visualizzare il percorso del file selezionato.