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 :

[C#] Remplir un ImageList en Asynchrone


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Par défaut [C#] Remplir un ImageList en Asynchrone
    Bonjour,

    Je cherche à remplir un ImageList avec une liste d'image importante.

    L'ImageList sert a afficher les images des noeuds d'un TreeNode.

    Actuellement l'affichage du TreeNode s'effectue au bout de quelques secondes car auparavant je remplis mon ImageList avec ma liste d'Image.

    Je voudrais donc remplir mon ImageList en asynchrone afin de ne pas perturber et bloquer l'utilisateur.

    Merci de m'orienter!


  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ca dépend comment tu remplis ton TreeView en fait...
    Si tu affiches tous les noeuds tout de suite, il faut avoir déjà chargé les images.

    Sinon, tu peux faire comme ça : dans l'évènement BeforeExpand, tu peux regarder, pour chaque noeud enfant, si l'image dont il a besoin est déjà dans la liste, et si ce n'est pas le cas tu la charges...

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Par défaut
    ah bon ?
    mince alors !

    car effectivement je charge d'abord mes noeuds et ensuite j'aurai aimé associé ma liste d'images au noeuds dynamiquement !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par sorcer1 Voir le message
    car effectivement je charge d'abord mes noeuds et ensuite j'aurai aimé associé ma liste d'images au noeuds dynamiquement !
    Ben le problème, si tu charges les images dans un thread séparé, c'est que ça impacte l'interface graphique, et on ne peut accéder à l'interface que dans le thread principal.

    Quand tu remplis ton TreeView, je suppose que tu ne déplies pas tous les noeuds ? donc ils ne sont pas tous affichés. Mon idée, c'est que tu ne charges l'image qu'au moment où tu en as besoin. Tu définis à l'avance l'ImageKey de chaque noeud, et au moment où il est affiché (donc quand son parent est déplié), tu vérifies si l'image est dans l'ImageList, et si ce n'est pas le cas tu la charges

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Par défaut
    si justement je déplie les noeud !

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Par défaut
    En fait j'ai scindé le traitement en 2 parties !

    thread X : pour créer les noeuds et remplir le treeview

    thread Y : pour télécharger les images en asynchrone

    dès que j'ai fini le thread X j'associe mon imagelist à mon treeview et au fur et à mesure du téléchargement asynchrone les images s'affichent bien en face du noeud correspondant !
    il suffit juste d'utiliser la même clé/même index pour l'image dans le treeview et l'imagelist !

    voilà !

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par sorcer1 Voir le message
    si justement je déplie les noeud !
    Ben dans ce cas il ne doit pas y en avoir tant que ça... enfin j'espère, sinon tu as un sérieux problème d'ergonomie.

    Tu utilises toutes les images de l'ImageList ?

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

Discussions similaires

  1. [XL-2010] Remplir une ImageList depuis un UserForm
    Par newcab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/06/2014, 16h03
  2. remplir combobox asynchrone
    Par longuard dans le forum ASP.NET Ajax
    Réponses: 0
    Dernier message: 24/10/2012, 20h04
  3. [AC-2007] Remplir un ImageList avec un GIF multipages
    Par Filou07 dans le forum VBA Access
    Réponses: 0
    Dernier message: 14/11/2011, 16h14
  4. remplir une zone global imagelist ?
    Par BXDSPORT dans le forum Composants VCL
    Réponses: 4
    Dernier message: 20/05/2009, 16h34
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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