Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1680 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Charger un combobox plus rapidement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Charger un combobox plus rapidement

n°2321515
HaiDZ
On en a gros !
Posté le 01-10-2018 à 10:05:30  profilanswer
 

Hello :)
 
J'ai un petit problème today :o
 
Dans mon programme, je fais charger, via une DB, une liste contenant toutes les communes de France. Pour éviter d'attaquer la base en boucle, au chargement de l'appli, je viens créer une list contenant des objets de type commune.
 
Mon soucis, quand j'ai besoin de ses communes, je charge ma combo de cette façon :  
 

Code :
  1. comboBox_commune.DataSource = OutilsParametres.Communes;
  2. comboBox_commune.DisplayMember = "Libelle";
  3. comboBox_commune.ValueMember = "Id";
  4. comboBox_commune.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
  5. comboBox_commune.AutoCompleteSource = AutoCompleteSource.ListItems;


 
En soit, tout fonctionne bien, mais cela prend quasi 1 min à ouvrir la fenêtre, le temps que la combo charge.
 
Une idée de comment réduire encore ce temps ?  
 
Thanks :jap:

mood
Publicité
Posté le 01-10-2018 à 10:05:30  profilanswer
 

n°2321562
TotalRecal​l
Posté le 01-10-2018 à 22:36:31  profilanswer
 

Des remarques en vrac :
 
- Tu as bien pensé à mettre un BeginUpdate / EndUpdate autour ?
 
- Il me semble qu'il faut affecter DisplayMember / ValueMember AVANT le datasource sinon ça revient quasiment à tout charger deux fois. Ca vaut peut être aussi pour d'autres propriétés que tu utilises.
 
- Tu ne peux pas charger les items au démarrage comme tu fais, mais binder le combo plus tard (au select par exemple ?)
 
- Tu as bien vérifié que le plus lourd est le binding du combo et pas le chargement depuis la base ? Sinon pense à faire ça en asynchrone
 
- Tu le fais via quel événement (constructeur, load, etc) ?


---------------
Topic .Net - C# @ Prog
n°2321564
HaiDZ
On en a gros !
Posté le 01-10-2018 à 22:40:09  profilanswer
 

Du coup le plus lourd c'était vraiment l'affichage des champs, et non pas le fait de lui donner les valeurs.
 
J'ai fait une petite fonction qui vient charger que les éléments rentrant dans les critères du début de sélection.
 
exemple :  
 
Le combo est toujours vide par défaut. Le mec tape "Par", si il ne tape plus rien pendant 1 sec, je vais choper tout les éléments de type communes contenant "Par" dans ma list<commune> et je les charge. Niveau ergo c'est sympa, niveau chargement c'est rapide, donc c'est parfait :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Charger un combobox plus rapidement

 

Sujets relatifs
Récupération adresse IP de ma Passerelle en CDébutant en C rencontre quelques soucis...
codage en language CLogiciel pour développer en C++
[STM32]Implémentation afficheur oled NHD0420CW en I²C[Langage C] Problème d'affichage Chat 2 clients
concatenation de Label C++ builderMonter rapidement un environnement MARIADB
[C++] Lambda capture de pointeur 
Plus de sujets relatifs à : [C#] Charger un combobox plus rapidement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR