2010-10-21 13 views
0

Je suis trop simpliste ici, mais je dis que j'ai un WinForm avec plusieurs contrôles (par exemple: une zone de texte, une arborescence et une liste). Afin de garantir une expérience optimale pour le futur (par exemple, cette liste peut contenir un grand nombre de données), que faut-il faire au départ?C# Assurer que l'interface graphique soit la plus fluide possible

Ma connaissance de ce genre de chose est très limitée, mais je suppose que le double tampon est conseillé? J'ai également entendu quelque chose sur le remplacement de la méthode OnPaint pour certains contrôles?

Merci Zach

Répondre

2

Lors de la conception de nouvelles applications que vous ne devez pas penser à ce genre de choses. Si vous rencontrez des problèmes plus tard, une correction peut être appliquée sans détruire le travail que vous avez déjà mis dans le projet. Bien que je peux vous assurer que 95% des applications n'ont pas besoin d'optimisations particulières concernant les contrôles ou la peinture des contrôles, en particulier pas dans OnPaint. Bonne chance.

+0

Merci pour le conseil. Je demande seulement parce que la dernière application que j'ai créée a causé beaucoup de problèmes en raison de quelques scintillements de mes commandes d'utilisateur. En outre, le redimensionnement des colonnes d'une liste était incroyablement lent, et je voulais donc m'assurer que tout était réglé avant le début du «codage». –

+0

Oui, certains contrôles comme ListView nécessitent une correction mineure, car ils ont des problèmes de scintillement. Mais cela ne devrait pas vous concerner dans votre phase actuelle. Il y a aussi un problème avec la vue liste lorsque vous réglez des centaines d'éléments à la fois, mais cela peut également être résolu. – testalino

0

Pour assurer la plus douce expérience possible pour l'avenir (par exemple, que listview peut un jour tenir un grand nombre de données), ce qui devrait être fait au début?

1- Si vous voulez stocker des données volumineuses, essayez d'implémenter la pagination des données.

2- Vous utilisez treeview, n'essayez pas de charger l'arbre entier en mémoire. Utilisation À la demande Chargement de l'arborescence, c'est-à-dire afficher uniquement les nœuds racine et lorsque l'utilisateur clique pour développer un nœud uniquement, puis charger les données. 3- Si votre application fournit une fonctionnalité de recherche de nœuds dans l'arborescence, essayez de vous rappeler que l'arborescence est un type particulier de graphique. Utilisez donc des algorithmes de graphes appropriés (DFS, BFS) pour rechercher le nœud. 4- Essayez de déplacer des opérations qui consomment beaucoup de temps dans le composant de travail d'arrière-plan, cela évite la notification basée sur les événements, ce qui vous aide à signaler la progression de vos opérations. 5- Essayez d'utiliser la mise en cache de données modifiées non libres, cela suppose que vous ayez une winforms qui montre une liste de pays, il vous suffit de sélectionner les données une fois et de les stocker en mémoire pour que vous puissiez gagner. t besoin d'un nouvel appel de base de données chaque fois que vous avez besoin de ces données.

ce sont des étapes très initiales mais il peut y en avoir beaucoup d'autres aussi en utilisant la classe WeakRefernce pour votre arborescence.

Essayez de lire l'optimisation des performances sur MSDN.