IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment remplir une ListView?


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut Comment remplir une ListView?
    Bonjour,

    j'aurai besoin de ptits conseil pour remplir une ListView...
    Je ne suis pas encore une pro avec les Windows Forms...

    En fait, je m'en sert pour charger un fichier de traces au format txt
    Chaque ligne du fichier correspond à une trace au format date/type/méthode/libellé

    Là, je commence par charger les traces du fichier dans un Hashtable
    puis, j'insère les élèments du Hashtable dans la ListView:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    struct StructureTrace
    {
    	public string type;
    	public string date;
    	public string methode;
    	public string trace;
    };
     
    private void SurOuvrirFichier(object sender, System.EventArgs e)
    {			
    	// Préparer la fenêtre de lecture du fichier de traces
    	ouvrirFichier = new OpenFileDialog();
    	ouvrirFichier.InitialDirectory = "D:\\";
    	ouvrirFichier.Filter = "Fichiers de traces|*.txt;*.log|Tous les fichiers|*.*";
     
    	// Lire le fichier de traces
    	if(ouvrirFichier.ShowDialog() == DialogResult.OK)
    	{				
    		// Vérifier que le fichier existe
    		FileInfo fi = new FileInfo(ouvrirFichier.FileName);
    		string chaine = "";
    		if(fi.Exists)
    		{
    			// Vider la liste si elle existe
    			if(listeTracesFichier.Count != 0)  listeTracesFichier.Clear();
     
    			// Créer le stream
    			FileStream fs = new FileStream(ouvrirFichier.FileName, FileMode.Open);
    			StreamReader sr = new StreamReader(fs);
    			int compteur = 0;
     
    			do
    			{
    				// Lire une ligne
    				chaine = sr.ReadLine();
     
    				if(chaine != null)
    				{
    					// Création de la structure d'acueil
    					StructureTrace st = new StructureTrace();
     
    					// Affectation
    					st.type = chaine.Substring(0, chaine.IndexOf("-") - 1); chaine = chaine.Substring(chaine.IndexOf("-") + 1);
    					st.date = chaine.Substring(0, chaine.IndexOf("{") - 1); chaine = chaine.Substring(chaine.IndexOf("{") + 1);
                                            st.methode = chaine.Substring(0, chaine.IndexOf("}")); chaine = chaine.Substring(chaine.IndexOf(":") + 2);
    					st.trace = chaine;
    					listeTracesFichier.Add(compteur, st);
    					compteur ++;																					
    				}
    			}while (chaine != null);
    		}				
     
    		AfficherTraces();
    	}
    }
     
    private void AfficherTraces()
    {			
    	string[] donnees = new string[4];
    	IDictionaryEnumerator listeTracesAAfficher = listeTracesFichier.GetEnumerator();
    	while(listeTracesAAfficher.MoveNext())
    	{				
    		// Création d'une instance de travail qui pointe sur les Tags
    		StructureTrace st;		
     
    		// Affectation de la trace
    		st = (StructureTrace)listeTracesAAfficher.Value;			
     
    		donnees[0] = st.date; donnees[1] = st.type;
    		donnees[2] = st.methode; donnees[3] = st.trace;
     
    		listeTraces.Items.Insert(0, new ListViewItem(donnees));
    	}
    }
    mais comme, il y a pls milliers de traces dans le fichier, ça met pas mal de temps à s'afficher...

    a terme, j'aimerai pouvoir aussi sélectionner le type de traces à afficher

    y'aurait-il une méthode un peu moins lourde?...

    merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Vérifie quelles sont les opérations qui prennent le plus de temps :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    private void SurOuvrirFichier(object sender, System.EventArgs e)
    {	
        DateTime kDTBegin = new DateTime();
        DateTime kDTEnd   = new DateTime();
     
        kDTBegin = DateTime.Now;
     
        if( ...
        {
            ...
        }
     
        kDTEnd = DateTime.Now;
        Debug.WriteLine( kDTEnd.Subtract( kDTBegin ) );
     
    }

    Les accès disque dur sont toujours ce qui pompe le plus de temps : les winforms n'y sont peut être pour rien...

Discussions similaires

  1. comment remplir une listview dynamiquement ?
    Par azert2010 dans le forum C#
    Réponses: 0
    Dernier message: 20/05/2011, 03h12
  2. Comment remplir une listview de plusieurs colonnes?
    Par Chacha35 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2009, 12h19
  3. Remplir une ListView avec une BD
    Par manikou dans le forum MFC
    Réponses: 1
    Dernier message: 17/05/2005, 09h48
  4. Comment remplire une CList ?
    Par stof dans le forum MFC
    Réponses: 23
    Dernier message: 02/02/2005, 17h33
  5. [SWT] Comment remplir une Table ?
    Par simon77 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 23/08/2004, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo