Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C#]Programma Video

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    20

    [C#]Programma Video

    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:

    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();
           }
    
    
       }
    }
    Qualcuno potrebbe essere cosi gentile da darmi una mano a capire l'errore??

  2. #2
    C# ha la sezione apposita, comunque...

    se si pianta tutto visual studio è possibile che ci sia un errore gestito male all'interno della open di altamira.

    prova a bypassare il problema controllando tu stesso che esista il file.

    codice:
    using System.IO;
    
    
    il File.Exist(textBox1.Text)
          Altamira.Open(textBox1.Text);
    else
          //messaggio id errore

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    20
    No non si pianta tutto visual studio si pianta solo il programma e viene sollevata un'eccezione non gestita all'interno del blocco catch, comunque il tuo modo potrebbe funzionare adesso lo provo, oppure potrei anche mettere dei blocchi try-catch all'interno del blocco catch se si può fare. Adesso ci provo grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    20
    Allora ho provato i 2 metodi.
    Quello utilizzando il blocco if funziona alla perfezione però utilizzando diversi blocchi try ho capito che era il messagebox che generava l'errore, che invece non veniva generato se lasciavo il blocco catch vuoto.
    Il problema l'ho risolto però mi rimane la curiosità di sapere come mai il messaggio generava l'errore...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.