IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment savoir le temps de chargement d'un formulaire? [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 67
    Points : 43
    Points
    43
    Par défaut Comment savoir le temps de chargement d'un formulaire?
    Bonjour à tous , je travaille sur une application de gestion et j'ai un formulaire liste qui contient une DataGridView et je veux que lorsque je clique sur une bouton m'affiche un formulaire d'attente pendant que ma liste se charge , alors j'ai pensé à un Timer avec ProgressBar mais je veux que l'interval de Timer prend le temps de chargement du formulaire avant de disparaître , j’espère que j'ai bien expliqué .
    et merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 243
    Points
    243
    Par défaut
    Bonjour,

    Enfait le problème pour ce que tu veux faire est que ton temps de chargement est inconnu à l'avance.

    Par conséquent je pense qu'il faut que tu fasses évoluer ton progressbar en fonction du nombre d'enregistrement de ta liste et non avec un timer.

    Tu charges ta liste (tu trouves par exemple 20 lignes). (list.count)

    Du coup progressbar va de x(inconnu) à 100% pour création de row de 1 à 20.
    à chaque fois que tu add une row à ta grille tu fais évoluer ton progressbar de (1 * 100)/20 = x(inconnu) 5%
    En somme un bon vieux produit en croix.

    Voila pour la logique que je mettrais en place.

    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Points : 158
    Points
    158
    Par défaut
    Je suis d'accord avec egautier sur la partie progressbar.

    Cependant, avoir une progressBar dépendant du nombre d'enregistrement, n'empeche pas de démarrer un timer global, dont le résultat sera affiché à la fin.



    Pour la progress bar, voici un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    int total = nombres d'enregistrement;
    //start un timer
                progressBarBureaux.Maximum = total;
                progressBarBureaux.Visible = true;
                progressBarBureaux.Step = 1;
                progressBarBureaux.Value = 0;
     
     
    //lorsque tu boucles sur tes enregistrement
    foreach (enregistrment)//je ne sais pas comment tu boucles, alors je met simplement ça
    {
                    progressBarBureaux.PerformStep();
    }
    //affiche contenu du timer
    Comme tu défini le maximum, la progressbar va gérer le pourcentage elle même, pas besoin de s’embêter avec un calcul.

    Je ne connais pas trop les timer, donc sur cette partie la je ne pourrais pas t'aider(donc j'ai juste mis des commentaires), mais sur le principe, tu peux je pense.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Je suis pas sûr d'avoir tout compris alors dis moi si je me trompe. Selon moi tu veux sur clic sur un bouton charger une grille (depuis une db peut-être) et pendant le temps de chargement afficher une sorte de popup d'attente.

    Si c'est ça le BackgroundWorker me parait être une bonne option. Ça te permet de pas te préoccuper de la gestion des threads et des erreurs. Tu peux aussi gérer la ProgressBar mais là ça me parait un peu plus compliqué si t'as qu'une requête sql car tu auras juste un traitement gloabal.

    En espérant ne pas trop avoir répondu à côté.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    Merci d'avance pour vos réponses , c'est exactement ce que je veux "Drahas" si tu peux me citer une sorte de code car je n'ai aucune idée sur les "BackgroundWorker "!! et merci à tous

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Tiens un exemple : http://www.codeproject.com/Articles/...-for-Beginners

    Si t'es en WinForm comme je le présume, c'est un composant de la boite à outils que tu ajoutes sur ta forme. Après tu as juste à implémenter le DoWork et le RunWorkerCompleted (si tu veux / peux gérer la progression tu as le ProgressChanged qui se déclenche par le ReportProgress). Tu lances ton traitement avec la méthode RunWorkerAsync.

    Si tu veux persister un peu dans le développement va falloir apprendre à chercher un peu, sur le BackgroundWorker une recherche t'aurais donné tout ce qu'il faut.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    Merci beaucoup "Drahas" , tu m'as donné une réponse globale (y) et je vais chercher de plus

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Voilà c'est mieux, mais n'hésites pas si tu bloc sur un truc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment réduire le temps de chargement d'une base SQLite dans un dataset?
    Par billybobbonnet dans le forum Accès aux données
    Réponses: 9
    Dernier message: 29/08/2014, 17h39
  2. Comment récupérer le temps de chargement d'un programme
    Par tidgirkt dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 27/05/2011, 16h52
  3. comment calculer le temps de chargement?
    Par itmak dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 02/07/2009, 16h14
  4. Réponses: 1
    Dernier message: 01/10/2008, 18h56
  5. Réponses: 1
    Dernier message: 09/01/2007, 20h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo