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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [ C# ] ListView qui consomme un max

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ C# ] ListView qui consomme un max

n°2093968
Profil sup​primé
Posté le 08-08-2011 à 16:22:39  answer
 

Bonjour :o
 
 
Voilà j'ai un problème super bizarre avec un Listview (Winforms).  :pt1cable:  
Elle consomme un max de puissance CPU (à savoir 5-15% de taux d'utilisation CPU [Core Duo T2400]) à partir du moment où elle a un item à afficher  :pt1cable:. Alors au début j'avais un timer pour la rafraichir toute les 2,5%, mais même sans timer j'ai ce problème.
 
Je précise que c'est bien l'affichage qui consomme la puissance et pas le traitement qu'il y a avant des donnés qu'on cherche à afficher.
De plus cette liste ne contient que 4-6 éléments, 5 colonnes et 2-3 groupes au max. Rien de plus!
 
Concrètement.

Code :
  1. Console.ForegroundColor = ConsoleColor.White;
  2. Console.Write("{0}", lvItem.SubItems[1].Text);
  3. Console.ForegroundColor = ConsoleColor.Green;
  4. Console.Write("  {0}", lvItem.SubItems[2].Text);
  5. Console.Write("  {0}", lvItem.SubItems[3].Text);
  6. Console.ForegroundColor = ConsoleColor.Blue;
  7. Console.Write("  {0}", lvItem.SubItems[4].Text);
  8. Console.ForegroundColor = ConsoleColor.Red;
  9. Console.WriteLine("  {0}", lvItem.SubItems[5].Text);
  10. Console.ResetColor();
  11. //lvHosts.Items.Add(lvItem);


La pas de prob de charge CPU, ca prouve bien que c'est pas traitement des info à mettre dans l'item qui est en cause.  
Par contre si je décommente la dernière ligne c'est la "cata".
(Le Subitems[0], c'est juste une icone 16x16px.)
 
 
J'y comprends rien  :cry:  
 
 
Vous pouvez m'aider s'il vous plaît?
 
Merci


Message édité par Profil supprimé le 08-08-2011 à 16:24:21
mood
Publicité
Posté le 08-08-2011 à 16:22:39  profilanswer
 

n°2094282
TotalRecal​l
Posté le 09-08-2011 à 21:18:36  profilanswer
 

Tu appelles BeginUpdate / EndUpdate autour de tes groupes d'insertions dans la LV ?


Message édité par TotalRecall le 09-08-2011 à 21:18:44

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2094326
Profil sup​primé
Posté le 09-08-2011 à 23:58:54  answer
 

Je viens de trouver la source du problème. J'en reviens toujours pas.
 
La listView contient 3 ListViewGroup. Ben je les enlève et plus de problème de surcharge CPU.  [:tinostar]  
 
Non mais c'est dingue. Ces 3 ListViewGroup je les ai créé avec l'interface graphique de Visual Studio, j'ai juste donné un nom au header de ce group et rien d'autre.
 
Je précise aussi qu'il suffit que ces ListViewGroup soit ajoutés à l'objet listview pour avoir le problème. Même si ces groups ne sont pas affichés (car aucun item n'est dans ces group) ben ca bug quand même.
 
 
Je suis sur le cul là.  [:tinostar]  
Ca m’embête parce que ca m'arrangeait bien ces groups.

n°2094340
Profil sup​primé
Posté le 10-08-2011 à 07:21:49  answer
 

Bon alors je viens de créer une application à part.
 
Elle ne contient qu'une listview à 6 colonnes et 3 listviewgroup (j'ai pas encore testé avec d'autre valeurs).
 
Un bouton pour rajouter des item à la listview:

Code :
  1. lv.BeginUpdate();
  2.             ListViewGroup myGroup = lv.Groups[0];
  3.             ListViewGroup myGroup2 = lv.Groups[1];
  4.             ListViewGroup myGroup3 = lv.Groups[2];
  5.             ListViewItem item = new ListViewItem();
  6.             item.Group = myGroup;
  7.             item.SubItems.Add("blabla" );
  8.             item.SubItems.Add("blabla" );
  9.             item.SubItems.Add("blabla" );
  10.             item.SubItems.Add("blabla" );
  11.             item.SubItems.Add("blabla" );
  12.             item.SubItems.Add("blabla" );
  13.             item.SubItems.Add("blabla" );
  14.            
  15.             ListViewItem item2 = new ListViewItem();
  16.             item2.Group = myGroup;
  17.             item2.SubItems.Add("blabla" );
  18.             item2.SubItems.Add("blabla" );
  19.             item2.SubItems.Add("blabla" );
  20.             item2.SubItems.Add("blabla" );
  21.             item2.SubItems.Add("blabla" );
  22.             item2.SubItems.Add("blabla" );
  23.             item2.SubItems.Add("blabla" );
  24.             lv.Items.Add(item);
  25.             lv.Items.Add(item2);
  26.             lv.EndUpdate();


 
Et c'est tout, il a absolument plus rien d'autre.
Résultat?
 
Ca bug aussi, mais sous certaines conditions.
 
1.
http://img803.imageshack.us/img803/6866/test1copy.png
 
 
2.
http://img135.imageshack.us/img135/599/test2copy.png
 
Notez la différence de charge CPU.
La différence entre ces 2 images? La scrollbar!!!  :cry:  
 
Dès qu'il y a trop de item et que la scrollbar apparaît la charge CPU augmente!!!
 
 
Par contre dans ma première application sur laquel je bossais et où j'ai eu le problème (d'ailleurs sur les 2 différents PC sur lesquels je bosse), je n'ai pas besoin que la scrollbar apparaisse pour avoir ce problème de surcharge cpu. C'est vraiment bizarre.


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

  [ C# ] ListView qui consomme un max

 

Sujets relatifs
affichage listview c#Pb chargement de ToolTips sur ListView
Probleme dans le Header de ListView[VB.net] Evenement pour selection multiple listView
Une ListView en temps réel ?Vb mode evenementiel listview
Affichage "Live "dans ListViewListview sélection d'un item
[Résolu][c++][apiWin32] gestion de la souris dans listview[WPF] Databinding et combinaison de Treeview et Listview
Plus de sujets relatifs à : [ C# ] ListView qui consomme un max


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