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 :

[VB.NET] Fenêtre modale sans blocage de code, c'est possible ?


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 50
    Points : 46
    Points
    46
    Par défaut [VB.NET] Fenêtre modale sans blocage de code, c'est possible ?
    Boujour à tous,

    Voici mon problème : j'ai créé une boite de dialogue permettant d'afficher, via une ProgressBar, où en est un travail (une fenêtre "Loading" en gros). J'aimerais arriver à rendre cette fenêtre modale quand elle est affichée (donc empêcher toute intéraction sur la fenêtre parente pendant un travail) mais également à ce qu'elle ne bloque pas le code derrière (vu que le code doit exécuter le travail, sinon la fenêtre "Loading" n'aurait pas de sens...). Les 2 fonctions disponibles pour afficher une fenêtre sont :
    - Show() qui laisse le code s'exécuter mais ne rend pas la fenêtre modale
    - ShowDialog() qui rend la fenêtre modale mais bloque le code tant qu'elle n'est pas fermée

    Existe-t-il un moyen de faire un "mix" de ces 2 méthodes pour arriver au résultat que j'attend ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 59
    Points : 80
    Points
    80
    Par défaut
    L'objet "backgroundWorker" est fait pour ça: c'est un objet qui execute un traitement dans un thead à part.
    Donc l'enchainement est :
    - dire à l'objet BackgroundWorker quel traitement il doit faire quand il démarre
    - afficher ta form avec un showModal
    - dans le "load" ou le "shown" de ta form, démarrer le backgroundWorker
    - dès que le backroundWorker est fini, fermer ta form.

    Tu peux aussi, dans ta form modale, afficher l'avancement dans une progess bar, puisque le backgroundWorker permet d'envoyer des évènements à ta form.

    Voir doc du backgroundWorker.
    @ +

    [Edit] PS: exemple en direct live dans l'appli http://hdgraph.sourceforge.net , quand l'appli scan le disque dur.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 59
    Points : 80
    Points
    80
    Par défaut
    ... ou plus simple, mais moins joli: dans l'évènement "shown" de ta form modale, tu lances ton gros traitement et tu fais un "Application.DoEvents" à chaque fois que tu mets à jour ta progress bar.

    @ +

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par jyl2002
    L'objet "backgroundWorker" est fait pour ça: c'est un objet qui execute un traitement dans un thead à part.
    Merci, c'est pile ce que je cherchais !

    Ci-dessous un lien vers la MSDN (EN) pour la classe BackGroundWorker du framework 2.0 avec l'exemple qui va bien :

    http://msdn2.microsoft.com/en-us/lib...er(vs.80).aspx

  5. #5
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Exact le BGW est une petite merveille du Framework 2.0, controle que j'ai découvert il n'y a que 3 mois !

Discussions similaires

  1. 'uigetfile' sans boite de dialogue, c'est possible?
    Par Tonton Ricardo dans le forum MATLAB
    Réponses: 4
    Dernier message: 03/07/2008, 11h18
  2. Problème de fenêtre modal qui ne stoppe pas le code en arrière plan
    Par Sebcaen dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/09/2006, 14h43
  3. Réponses: 2
    Dernier message: 30/06/2006, 15h20
  4. [VB.net] PostBack et fenêtre modale
    Par davasm dans le forum ASP.NET
    Réponses: 2
    Dernier message: 27/06/2006, 17h55
  5. Réponses: 1
    Dernier message: 11/04/2005, 10h59

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