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

Windows Forms Discussion :

Rafraichir l'affichage d'une form/progressbar


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut Rafraichir l'affichage d'une form/progressbar
    Bonjour,

    j'ai un long traitement dans ma form et j'ai donc un progress bar pour afficher là où en est rendu mon traitement.
    Comment puis-je faire pour redessiner le composant/traiter les évènements car ma form se bloque complètement.
    Je ne souhaite pas utiliser de thread pour l'instant.

    Comment faire ?

    J'ai chercher sur internet mais rien trouvé. Avec la programmation Win32 on utilisait ProcessMessage.

    Merci.

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Si c'est la gestion d'un thread qui t'effraie, utilise un BackgroundWorker. Tu n'auras alors qu'à gérer des événements sans te soucier des thread. C'est très simple et prévu pour gérer un avancement (événement ProgressChanged).

  3. #3
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Le problème c'est que dans mon traitement j'accède à plusieurs composant d'interface or dans ce tutoriel, il est indiqué qu'on ne peut pas manipuler les objets d'interface.

    Comment faire alors ?

  4. #4
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Comment ça ? Il est bien indiqué : "les event handler des évènements ProgressChanged et RunWorkerCompleted sont là pour ça". Je t'avais signalé qu'il faut mettre à jour l'avancement dans l'événement ProgressChanged.

  5. #5
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Oui, pardon, je me suis mal exprimé.

    Dans ma méthode DoWork, j'ai fait appèle à des composants visuel (ce qui n'est pas permis). Donc, il faut que je passe par des variables globales pour palier ce problème.
    Si j'ai bien compris.

    Mais voilà, je charge un fichier dans un textBox et met à jour une progressebar, ça complique un peu.
    Et-ce que si je charge dans un variable temporaire mon fichier puis l'affecte à ma textBox, ça duplique la chaine (donc besoin de 2x de mémoire) ou est-ce que ça pointe sur la chaine avec le risque à la prochaine lecture, effacer le contenu du textBox ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut
    Si ton (long) traitement est dans le même thread que ton interface, pas de secret : monControle.Refresh(). Celà force ledit contrôle et tous ses controles enfants à se redessiner. Dans ton cas, puisque la fenêtre entière est "bloquée", appelle maForm.Refresh(). La ProgressBar se redessinera également.

    Celà dit dans l'idéal, un long traitement devrait avoir son propre thread ...

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

Discussions similaires

  1. Affichage dans une forme
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 3
    Dernier message: 22/09/2006, 17h03
  2. Question sur l'affichage d'une form dynamique?
    Par Jayceblaster dans le forum Delphi
    Réponses: 1
    Dernier message: 18/09/2006, 14h36
  3. Réponses: 2
    Dernier message: 28/06/2006, 16h50
  4. Affichage d'une forme transparente
    Par cedekasme dans le forum MFC
    Réponses: 5
    Dernier message: 11/01/2006, 15h44
  5. Evénement après l'affichage d'une Form
    Par nikhil dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/06/2005, 13h57

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