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

VB.NET Discussion :

Mettre un Gif pour faire patienter


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Points : 61
    Points
    61
    Par défaut Mettre un Gif pour faire patienter
    Salut tout le monde

    J'ai une forme à partir de la quelle j'en appelle un autre avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       'Ouvre la page jeux
        Private Sub Picto_Jeux_Click(sender As Object, e As EventArgs) Handles Picto_Jeux.Click
            Frm_Jeux.Pan_Temoin_PageMenu.Visible = False 'Eteint le voyant de la page en cours
            Frm_Jeux.Show() 'ouvre la fenetre des jeux
            Frm_Karaokes.Close() 'Ferme la fenetre des karaokes
            Frm_Applaudimetre.Close() 'Ferme la fenetre appludimetre
            Frm_Documents.Close() ' ferme la fenetre documents
            Me.Close() 'Ferme moi
        End Sub
    Je voudrais, durant le temps de chargement de la nouvelle form, mettre un picto avec un Gif dedans. Le Gif est un petit cercle qui tourne sur lui-même. J'ai donc mis sur ma form un picto avec dedans mon Gif animé.

    J'ai tenté de mettre à la premiere ligne la commande suivante : Picto_Loading. visible = true pour qu'il soit visible mais le problème est que le picto ne s'affiche pas immédiatement et lorque daigne s'afficher, le gif ne s'anime pas.

    J'ai regardé du côté des backgrounndworker mais je ne pige pas comment cela fonctionne.

    Si vous ave des idées, je suis preneur

    Merci par avance.
    @+ Tipiak

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Utilises la propriété image d'un label.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    bonsoir

    Merci d'avoir répondu.

    J'ai essayé ton astuce et j'ai remplacé le Picto_loading par un label dans lequel je met mon image. Jusque là on est bon.

    Lorsque je lance ma Sub, j'ai toujours le même soucis. Le label s'affiche mais le gif ne tourne pas.

    Donc résultat ca ne le fait pas.

    Merci quand même

    @+ Tipiak

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je comprends pas pourquoi, c'est comme ça que je fais???

    C'est même la méthode préconisé par Microsoft.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Re

    J'ai réessayé ce mati mais même résultat.

    Même si je met mon GIF animé visible au début, il tourne sans soucis mais dès que je lance la procédure d'ouverture de la fenêtre Frm_Jeux.show, le GIF se fige.


    Je poursuis mes recherches. je veux comprendre.

    @+ Tipiak

  6. #6
    Invité
    Invité(e)
    Par défaut
    Nom : Test.gif
Affichages : 699
Taille : 11,2 Ko

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Salut

    dysorthographie J'ai ce genre de Gif dans une autre forme et il fonctionne car lorsque la form est ouverte, il n'y a que très peu de code qui tourne ou s'exécute.

    Comme dit depuis le début, le Gif est fixe dès lors que j'appelle l'ouverture d'une fenêtre.

    J'ai tenté de mettre le "frm_Jeux.show" dans un do-work d'un backgroundworker et dans le bouton d'appel un backgroundworker.RunWorkerAsync()

    et voici le message d'erreur que j'ai en utilisant cette méthode :
    System.InvalidOperationException*: 'Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est*: Impossible d'instancier le contrôle ActiveX '6bf52a52-394a-11d3-b153-00c04f79faa6', car le thread actuel n'est pas un thread cloisonné (STA, Single-Threaded Apartment).'

    Exception interne
    ThreadStateException*: Impossible d'instancier le contrôle ActiveX '6bf52a52-394a-11d3-b153-00c04f79faa6', car le thread actuel n'est pas un thread cloisonné (STA, Single-Threaded Apartment).
    Je n'y comprend vraiment rien…

    @+ Tipiak

  8. #8
    Invité
    Invité(e)
    Par défaut
    et comme ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub ThreadProc()
          Frm_Jeux.Pan_Temoin_PageMenu.Visible = False'Eteint le voyant de la page en cours
            Frm_Jeux.Show() 'ouvre la fenetre des jeux
            Frm_Karaokes.Close() 'Ferme la fenetre des karaokes
            Frm_Applaudimetre.Close() 'Ferme la fenetre appludimetre
            Frm_Documents.Close() ' ferme la fenetre documents
            Me.Close() 'Ferme moi    
    End Sub

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Re

    Non ca fait toujours pareil. Même message d'erreur que ci-dessus.

    Par contre le gif tourne un petit peu mais s'arrête très vite.

    Merci

    @+ Tipiak

  10. #10
    Membre habitué Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Points : 135
    Points
    135
    Par défaut
    Un background worker peut être une bonne idée. En effet ton gif est fixe lorsque du code s'exécute c'est ça ? C'est sûrement parce que le thread est occupé par ton code.
    Le backgroundworker permet d'exécuter du code sur un autre thread et donc laisser libre le thread de ton form.

    En clair, tu mets un backgroundworker sur le form où le gif tourne. Tu crées ensuite l'évènement backgroundworker -> dowork, et tu mets ton code de chargement dedans.

    Tu peux dire au bw de se lancer et d'exécuter son code depuis ton form avec le gif, avec la commande monbackgroundworker.RunWorkerAsync().

    Ensuite, tu crées l'évènement backgroundworker -> RunWorkerCompleted(), et tu y insères le code que tu veux. Celui-ci s'exécutera donc lorsque le bw aura fini d'exécuter son code (par exemple fermer le form avec le gif du coup).

    Et voila le GIF tournera pendant que tu exécute ton code.

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    bonjour.

    Avec un peu de retard, je reprends la suite de la conversation.

    Comme dis auparavant,

    J'ai mis mon backgroundworker sur ma form.
    Dans le DoWork du backgroundworker, j'ai mis la commande : MaForm.show.
    Dans la commande du bouton pour ouvrir la Maform, j'ai mis la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Picto.visible = true //(le picto avec mon gif animé)
    backgroundworker.RunWorkerAsync()
    Dans le completed du backgrounworker j'ai mis picot.visible = false et fermeture de la form de départ

    Quand j’appuie sur le bouton pour ouvrir Maform le picto n'apparrait pas et le message d'erreur suivant pointe son nez :
    System.InvalidOperationException*: 'Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est*: Impossible d'instancier le contrôle ActiveX '6bf52a52-394a-11d3-b153-00c04f79faa6', car le thread actuel n'est pas un thread cloisonné (STA, Single-Threaded Apartment).'

    Exception interne
    ThreadStateException*: Impossible d'instancier le contrôle ActiveX '6bf52a52-394a-11d3-b153-00c04f79faa6', car le thread actuel n'est pas un thread cloisonné (STA, Single-Threaded Apartment).
    J'ai visiblement quelque chose qui empêche le backgroundworker de travailler correctement mais quoi ???

    Merci pour votre aide

    @+ Tipiak

  12. #12
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour,

    il est strictement interdit d'interagir avec la partie graphique de l'application à partir d'un autre thread.

    Pour régler votre soucis je déporterais le chargement différé sur la form où se charge les données et mettrait le gif sur celle-ci.
    De cette manière cette fenêtre se comportera bien peut importe de où vous l'instanciez.

  13. #13
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Il y a bien eu l'ActiveX GIF89.dll; dans des temps anciens. Mais aujourd'hui le moteur de recherche que j'ai essayé ne donne que des sites qui sont supposés scanner votre système pour vous dire si vos dll sont à jour; et vous vendre le programme qui va trouver les bonnes dll et vous les installer ????????


    Mais est-ce vraiment vrai ????????
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

Discussions similaires

  1. Phrase pour faire patienter l'utilisateur durant l'envoi d'un formulaire
    Par heretik25 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/03/2012, 13h40
  2. [WD16] Animation pour faire patienter l'utilisateur
    Par bombseb dans le forum WinDev
    Réponses: 8
    Dernier message: 14/02/2012, 15h19
  3. Image pour faire patienter l'utilisateur
    Par sakhavat dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/04/2011, 09h53
  4. Réponses: 3
    Dernier message: 03/11/2010, 17h59
  5. Fenêtre pour faire patienter l'utilisateur
    Par youss20 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 10/10/2009, 01h38

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