2009-12-05 2 views
3

Je crée une petite application C# GUI qui lit des données de type table (cellules, lignes, colonnes) à partir d'un fichier binaire et l'affiche à l'utilisateur final. Certains fichiers sont très petits (5 colonnes/10 lignes), mais certains sont très gros (245 colonnes et près de 50 000 lignes).C# GUI, doit afficher une table énorme et le rendre triable

La seule et unique méthode que j'ai trouvée pour afficher facilement une table de type MsExcel était DataGridView. J'en étais vraiment content quand j'ai essayé les petits fichiers, mais dès que j'ai essayé avec l'énorme, il est sorti d'OOM avant même qu'il ne finisse de charger (et j'avais plus de 4 Go de mémoire libre). Après cela, j'ai découvert que c'était VirtualMode, et c'était vraiment rapide. Malheureusement, les colonnes n'étaient plus triables et c'est un must. Alors, que puis-je faire pour obtenir des performances similaires à celles du mode virtuel de DataGridView, mais que je puisse également trier? (Si vous avez un autre contrôle à l'esprit, il est bon, je ne dois pas nécessairement utiliser DataGridView)

En outre, s'il vous plaît noter que:

  • Les fichiers binaires ne sont pas conçus ou fabriqués par moi. Je n'ai aucun contrôle sur leur format.
  • Les données ne sont pas dans une base de données.
  • Mes utilisateurs finaux ne devraient pas avoir à installer une base de données et y importer les données.

Répondre

2

Vous pouvez gérer le tri par vous-même et trier la source de données de datagridview avec l'un des algorithmes de tri "standard".

Si vous utilisez Liste, vous pouvez utiliser une méthode "Trier()". Cependant chaque collection peut être triée par vous-même.