Meilleur auteur de réponses
Problème de performances avec un grand nombre de checkbox (VB Express 2008)

Question
-
Bonjour,
Je viens vers vous car j’ai un sérieux problème de performances aussi bien processeur que mémoire.
Je ne peux poster mon code source car j’ai des contraintes de confidentialités vis-à-vis de mon client.
Je vous explique :
Je dois réaliser un soft qui permet de faire certains calculs sur des matrices.
L’affichage de ces matrices doit se faire « à plat ». Chaque cellule doit avoir un effet visuel (comme lorsqu’on passe au dessus avec la souris) et être sélectionnable.
La matrice la plus grande est une 30 x 60 ce qui revient à 1800 cellules à afficher.
J’ai donc opté pour la solution graphique la plus lourde à mon gout :
Sur la form de fond, j’ai appliqué un flowlayoutpanel, dans lequel j’ai inséré 1800 checkbox avec les propriétés selon l’image en pièce jointe de ce message.
Je ne suis pas un pro de VB, mais plus du c++, du coup j’ai un peu de mal avec la lourdeur de certains objets graphique. (J’ai aussi eu la contrainte du langage)
Vous comprenez ainsi que gérer 1800 checkbox est extrêmement lourd.
Pour connaître quelle cellule de la matrice est sélectionnée, j’utilise la solution de parcourir tous les objets du flowlayoutpanel et de vérifier que c’est une checkbox et quel est son état. (solution assez efficace plutôt que de gérer les 1800 objets indépendamment ^^ )
Connaissez-vous une méthode qui serait plus légère ? Ou peut-être des objets déjà tout fait à utiliser ? Je ne veux pas utiliser de datagridview, car il me faut pouvoir obtenir l’effet visuel que vous pouvez voir sur l’image en pièce jointe (vue_d_ensemble.jpg)
Je suis preneur de toute idée afin de pouvoir améliorer cette interface graphique !! (j’ai déjà modifié le fichier form.designer afin de ne pas avoir de nouvel objet font et padding pour tous les éléments, ça m’a fait gagner déjà quelques perfs !)
Si jamais cela s’avère nécessaire, je pourrai toujours réaliser une petite application VB ne contenant que l’interface graphique sans le code confidentiel !
Je vous remercie par avance,
Voici les captures d'écran :
http://braubrau.free.fr/vb/vue_d_ensemble.jpg
http://braubrau.free.fr/vb/proprietes.jpg
nbrau
Réponses
-
j'avoue y avoir pensé, mais je pense qu'il doit être "plus léger" pour l'appli de tout charger une première fois au démarrage que de les créer ou de les supprimer dynamiquement. (là c'est une question de perf réactionnelle)Je me penche sur une autre méthode actuellement, on m'a parlé de l'événement cellpainting du datagridview, et ça m'a l'air pas trop mal pour obtenir un effet visuel comme celui que je recherche :)De plus il y a des options que je ne connaissais pas vraiment : enlever tous les styles, les en-têtes de colonne et de ligne, mettre des checkbox ou bouton à la place des cellules, etcMais en parallèle je continue mes recherches !Mercinbrau
- Marqué comme réponse Gilles TOURREAUModerator mercredi 11 novembre 2009 20:44
Toutes les réponses
-
-
j'avoue y avoir pensé, mais je pense qu'il doit être "plus léger" pour l'appli de tout charger une première fois au démarrage que de les créer ou de les supprimer dynamiquement. (là c'est une question de perf réactionnelle)Je me penche sur une autre méthode actuellement, on m'a parlé de l'événement cellpainting du datagridview, et ça m'a l'air pas trop mal pour obtenir un effet visuel comme celui que je recherche :)De plus il y a des options que je ne connaissais pas vraiment : enlever tous les styles, les en-têtes de colonne et de ligne, mettre des checkbox ou bouton à la place des cellules, etcMais en parallèle je continue mes recherches !Mercinbrau
- Marqué comme réponse Gilles TOURREAUModerator mercredi 11 novembre 2009 20:44
-