Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [C#] Finestra di dialogo con chiusura automatica

    Ciao a tutti!

    Vorrei stampare a video un messaggio in una finestrella tipo MessageBox, ma fatta in modo che sia senza tasti (ok ecc...) e si chiuda al termine di una determinata informazione.

    Ho controllato la MessageBox ma non ho trovato un proprietà "close" o "exit".

    Suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    usa una form normale

  3. #3
    Sagace!

    Peccato per un particolare, il nuovo form non viene visualizzato in modo corretto perchè il programma passa subito all'istruzione successiva, nel mio caso, l'upload di un file.

    ho cercato di implementare un ritardo:

    codice:
    Globale.msgUp.Show(); // Form con il messaggio "Upload in corso"
    System.Threading.Thread.Sleep(1000); // Ritardo
    Client.Credentials = new System.Net.NetworkCredential(Globale.username, Globale.password);
    Client.UploadFile(Globale.destinazione, Globale.sorgente);
    System.Threading.Thread.Sleep(100);
    Globale.msgUp.Close();
    System.Threading.Thread.Sleep(100);
    MessageBox.Show("Upload del file avvenuto con successo");
    In pratica, prima viene eseguito il ritardo, poi viene stampato a video il form con il messaggio, ma questo non viene visualizzato correttamente perchè il programma passa subito all'istruzione successiva.

    Consigli?

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    non ho ben chiaro l'obbiettivo...

    mi puoi spiegare meglio l'applicazione?

  5. #5
    Allora, in pratica devo effettuare l'upload di un file nel mio spazio WEB.
    Per l'upload in sè non ci sono problemi, il punto è che vorrei far comparire un messaggio del tipo "Upload in corso" mentre sta effettuando l'upload.
    A tal fine ho pensato di rendere visibile una Label con tale messaggio prima dell'upload e chiuderla subito dopo.
    Solo che quando la Label viene resa visibile, questa risulta incompleta e il programma passa subito all'upload vero e proprio, come se l'istruzione relativa alla Label non venisse completata prima di passare alla successiva.

    Questo è il codice completo:

    codice:
    try
    {
      if (FileSelezionato.Text != "" && IndirizzoDestinazione.Text != "" && UserName.Text != ""   &&   Password.Text != "")
      {
        WebClient Client = new WebClient();
        Globale.sorgente = FileSelezionato.Text;
        Globale.destinazione = IndirizzoDestinazione.Text;
        Globale.username = UserName.Text;
        Globale.password = Password.Text;
        Client.Credentials = new System.Net.NetworkCredential(Globale.username,     Globale.password);
       label5.Visible = true; // La label contenente il messaggio
       Client.UploadFile(Globale.destinazione, Globale.sorgente);
       label5.Visible = false;
       MessageBox.Show("Upload del file avvenuto con successo");
     }
     else
     {
         MessageBox.Show("Compilare tutti i campi", "Errore");
     }
    }
    catch (Exception)
    {
        MessageBox.Show("Si è verificato un errore durante l'upload", "Errore");
    }
    Cosa sto sbagliando?

  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    devi gestirla diversamente :
    devi usare l'evento System.Net.WebClient.UploadFileCompleted per rendere invisibile la label non metterla nel codice dell' upload

  7. #7
    Ho provato a mettere una MessageBox dopo la Label e in questo modo funziona, stampa il messaggio e poi si ferma sino a quando non chiudo la MessageBox.

    Per la questione dell'UpdateFileCompleted, potresti illustrarmela con un esempio specifico per il mio problema? La ho visionata più volte stasera ma non ne ho compreso bene il funzionamento.

    Grazie.

  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    nel senso che non sai come gestire gli eventi? se si la cosa piu' semplice (senza romperti le p@773 con teoria ecc... ma ti consiglio di dare un occhiata con piu attenzione alla guida!) è :
    metti Client come campo e nel costruttore dopo aver scritto This.Client premi il punto e clicca sul nome dell'evento aggiungi += e visual studio ti dara un suggerimento premi tab finche non ti crea il metodo, dentro ci scrivi label5.Visible = false; e quest'ultima la togli dal codice che mi hai postato cosi come WebClient Client = new WebClient(); (lo farai nel costruttore).

    questo : MessageBox.Show("Upload del file avvenuto con successo"); vedi tu

    poi se avessi problemi a capire la teoria e vuoi una mano... se invece il problema è un altro... spiegami meglio per favore.

  9. #9
    Non mi è chiaro il concetto di mettere This.Client come campo.
    Dovrei sostituirlo a WebClient Client = new WebClient(); ma non capisco la sintassi.

    Un'altra cosa, la UpdateFileCompleted la dovrei mettere dopo la UploadFileAsync, giusto?
    Ho visto un esempio sul WEB dove la mettevano prima.

    Grazie per l'aiuto!

  10. #10
    La seguente sintassi è corretta?

    codice:
    Client.UploadFileCompleted += new UploadFileCompletedEventHandler (MessageBox("File inviato"));
    Client.UploadFileAsync(Globale.destinazione, Globale.sorgente);
    Oppure

    codice:
    bool trasferito = false;
    Client.UploadFileCompleted += new UploadFileCompletedEventHandler (MessageBox(trasferito=true));
    Client.UploadFileAsync(Globale.destinazione, Globale.sorgente);
    while (trasferito==false)
    {
        // Gestione della barra di avanzamento
    }
    In questo momento sono su una macchina senza Visual Studio e non posso provare il codice.

    Grazie.

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.