Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
questo è il mio primo post perciò colgo l' occasione per salutare tutti
Ho un progetto costituito da un Form e una Classe, nel Form ho aggiunto i seguenti controlli: una TrackBar, una Label e un Button.
Il Form contiene questo codice:
Codice sorgente - presumibilmente VB.NET
PublicClass Form1
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)HandlesMyBase.Load
TrackBar1.TickFrequency= 1
TrackBar1.Minimum= 0
TrackBar1.Maximum= 10
EndSub
PrivateSub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles TrackBar1.Scroll
Label1.Text= TrackBar1.Value
Class1.A.Volume= TrackBar1.Value'qui mi da l'errore di runtime
EndSub
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button1.Click
Class1.A.Play()
EndSub
EndClass
mentre la Classe, per rendere la variabile A globale, contiene questo codice:
Codice sorgente - presumibilmente VB.NET
PublicClass Class1
PublicShared A AsNew Microsoft.DirectX.AudioVideoPlayback.Audio("C:\"&"pupo.mp3")
EndClass
Naturalmente ho aggiunto i riferimenti a Microsoft.DirectX e a Microsoft.DirectX.AudioVideoPlayback da Progetto >> Aggiungi riferimento...
Non riesco a regolare il volume del file.mp3 che ho messo in C, qualcuno mi può aiutare perfavore?
Ci sto smanettando da tutta la notte ma non ci riesco proprio. Ho postato una versione semplificata del prog che sto scrivendo per non rendervi noiosa la lattura del programma e per far in modo che la soluzione sia di facile comprensione anche a chi possa avere il mio stesso problema.
Confido nel vostro aiuto e vi prego di spendere un pò del vostro tempo per darmi una mano.
GRAZIE INFINITE a chiunque possa e voglia aiutarmi.
ho risolto il problema del post precedente gestendo l' eccezione come nel codice che potete vedere sotto, lo riscrivo interamente così chi avesse la pazienza di costruirsi il form come ho descritto nel primo post di questo topic possa provare il programma semplicemente copiando e incollando questo secondo codice, per il resto la descrizione è identica a quella del primo post (unica aggiunta un MenuStrip con le voci File >> Apri e File >> Esci per aprire un file a scelta da un OpenFileDialog aggiunto al form e per poter uscire con Esci):
Codice sorgente - presumibilmente VB.NET
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)HandlesMyBase.Load
Non vedo il motivo di dichiarare una classe per aggiungerci una sola variabile. E' inutile. Inoltre non puoi definire nessuna classe prima di Form1, ma solo dopo. Dichiara A come variabile globale e importa il namespace AudioVideoPlayback invece di scrivere tutto il percorso del tipo. Poi non dichiarare A con un costruttore che potrebbe non esistere, assicurati che la stringa passata come parametro non sia vuota. Altra cosa: io ti consiglierei di togliere quell'handler multiplo e sostituirlo con più delegati, è più ordinato. In ultimo, per rendere il codice più leggibile, sostituire i nomi con nomi più significativi.
Puoi postare il testo dell'errore?
Non vedo il motivo di dichiarare una classe per aggiungerci una sola variabile. E' inutile. Inoltre non puoi definire nessuna classe prima di Form1, ma solo dopo. Dichiara A come variabile globale e importa il namespace AudioVideoPlayback invece di scrivere tutto il percorso del tipo. Poi non dichiarare A con un costruttore che potrebbe non esistere, assicurati che la stringa passata come parametro non sia vuota. Altra cosa: io ti consiglierei di togliere quell'handler multiplo e sostituirlo con più delegati, è più ordinato. In ultimo, per rendere il codice più leggibile, sostituire i nomi con nomi più significativi.
Puoi postare il testo dell'errore?
Errore sul rigo Class1.A.Play() nell' event Button1:
TypeInitializationException
p.s. Sono daccordo con te, ma mi serve per imparare.
Usando più delegati ho gia risolto e il codice è su.
I nomi li cambio dopo in più significativi, ho usato quelli di default per rendervi comprensibile il problema se no avrei dovuto scrivere un post kilometrico.
Potresti provare il codice perfavore e magari postarmelo corretto? L' errore è banale, ne son convinto, ma per me che del vb.net son nuovo è difficile risolverlo... e servirebbe come esempio anche ad altri che incontrassero lo stesso problema o problemi analoghi in futuro.
p.p.s. Il codice corretto perfavore... è più esplicativo di un milione di parole. GRAZIE!
Ultima modifica effettuata da ppanico2 il 30/07/2007 alle 3:11
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 condivisi, è 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 sorgente - presumibilmente VB.NET
PublicClass Form1
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)HandlesMyBase.Load
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.
Ultima modifica effettuata da ppanico2 il 30/07/2007 alle 15:49
Secondo me conviene utilizzare gestori di eventi per più controlli solo se eseguono operazioni identiche. Infatti per scrivere gestori a più handles si impiega più tempo, in quanto bisogna scrivere la sequenza degli If, mentre con gli eventi singoli, il codice necessario e sufficiente viene auto-generato dal compilatore e bisogna solo scrivere le routine.
Il file dovrebbe essere caricato anche con New Audio(file). Stai attento ad usare OpenFileDialog1.FileName: potrebbe anche essere Nothing.
L'eccezione della trackbar viene generata perchè dopo il Catch fai riferimento ad A, che non è inizializzato (non si sono selezionate canzoni). Puoi mettere un altro Try all'interno o all'esterno per catturare anche quest'eccezione, oppure verificare che A non sia Nothing con un If.
L'eccezione della trackbar viene generata perchè dopo il Catch fai riferimento ad A, che non è inizializzato (non si sono selezionate canzoni). Puoi mettere un altro Try all'interno o all'esterno per catturare anche quest'eccezione, oppure verificare che A non sia Nothing con un If.
Ci sto smanettando da tutto oggi ma non riesco a risolvere ti dispiacerebbe postarmi il codice corretto