Salve a tutti ho creato un piccolo programma per visualizzare video e funziona tutto bene tranne una parte di codice che genera un errore. Ecco tutto il listato corredato di commenti dove viene segnalata la parte che genera l'errore e il messaggio che fa comparire visual studio:
Qualcuno potrebbe essere cosi gentile da darmi una mano a capire l'errore??codice:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.DirectX; using Microsoft.DirectX.AudioVideoPlayback; namespace Video1 { public partial class Form1 : Form { // Creo un oggetto video chiamato Altamira Video Altamira = new Video("C:\\Documents and Settings\\Fede\\Desktop\\ALTAMIRA-X TE.wmv"); public Form1() { InitializeComponent(); //Faccio in modo che il video venga riprodotto nel pictureBox1 Altamira.Owner = pictureBox1; } //Bottone per Attivare/Mettere in pausa il video, quando si attiva il programma la prima volta bisogna premerlo 2 volte private void button1_Click(object sender, EventArgs e) { //Se il video è in pausa allora viene fatto andare avanti(per questo la prima volta bisogna premerlo 2 volte) if (Altamira.Paused == true) { //Viene attivato il video Altamira.Play(); //viene attivato un timer che ogni secondo va avanzare una trackbar che indica a che punto è il video timer1.Enabled = true; } //se il video è attivo allora viene messo in pausa else { //il timer viene disattivato timer1.Enabled = false; //il video viene messo in pausa Altamira.Pause(); } } //Bottone per cambiare video mettendone l'indirizzo in una TextBox private void button2_Click(object sender, EventArgs e) { //il timer viene disattivato timer1.Enabled = false; //il video viene messo in pausa per evitare problemi Altamira.Pause(); //Uso un blocco try catch per non far fermare tutto nel caso l'utente inserisca un indirizzo sbagliato try { //Uso il metodo open per aprire un nuovo indirizzo che è contenuto nella textBox Altamira.Open(textBox1.Text); } catch (Exception ex) { //Quando provo apposta a non inserire alcun indirizzo e premo il bottone si pianta tutto e compare //un messaggio di viasual studio che dice "Riferimento a un oggetto non impostato su un'istanza di oggetto." //E viene evidenziato in giallo l'istruzione che dovrebbe far apparire il messageBox //Qualcuno può dirmi perchè questo errore???????? MessageBox.Show(ex.Message); } finally { //nel caso ci sia un errore il programma ricarica automaticamente un video predefinito Altamira.Open("C:\\Documents and Settings\\Fede\\Desktop\\ALTAMIRA-X TE.wmv"); } } //il timer ogni secondo calcola il punto a cui è arrivato il video private void timer1_Tick(object sender, EventArgs e) { //Ogni secondo il timer calcola in percentuale a che punto è il video tramite una piccola operazione //e assegna quel valore alla trackBar2 trackBar2.Value = Convert.ToInt32((Altamira.CurrentPosition * 100) / Altamira.Duration); //Se la trackbar arriva alla fine fa ritornare il cursore all'inizio e fa ripartire il video da capo if(trackBar2.Value == 100) { trackBar2.Value = 0; Altamira.CurrentPosition = 0; } } //Questa trackBar serve per egolare il volume e ha un valore che va da -1000 a 0 che è il massimo private void trackBar1_Scroll(object sender, EventArgs e) { Altamira.Audio.Volume = trackBar1.Value; } //questa è la trackbar che indica a che punto è arrivato il video(quella del timer) //e può essere usata per far avanzare velocemente il video private void trackBar2_Scroll(object sender, EventArgs e) { //il timer viene disattivato timer1.Enabled = false; //il video viene messo in pausa Altamira.Pause(); //Imposta la posizione del video in base al valore della trackBar tramite una piccola operazione //che calcola la percentuale(l'inverso di quella per farla avanzare) Altamira.CurrentPosition = Convert.ToDouble((Altamira.Duration / 100) * trackBar2.Value); //iL timer viene riattivato timer1.Enabled = true; //Il video viene fatto continuare Altamira.Play(); } } }

Rispondi quotando