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 :

Comportement étrange d'une listview [Débutant]


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut Comportement étrange d'une listview
    Bonjour
    J'ai une listview associée à une imagelist pour explorer des repertoires
    Un menu me permet de choisir des modes d'affichages.

    -lorsque j'affiche en listView1.View = View.Details; je lis les fichiers d'un repertoire avec leurs caractéristiques (subitems)
    -ensuite je change en listView1.View = View.LargeIcon; je vois les photos demandées du même réperoire
    -Puis je reviens sur le même répertoire à nouveau en détails, il n'affiche plus rien...Parfois le comportement est ahurissant, un nom seul apparait, des lignes de grille trés espacées...etc
    Je voudrais savoir si VisualStudio 2010 a des bugs; mon anti-virus ne detecte rien; peut-être j'ignore une subtilité du logiciel
    Si necessaire je publierai le code (assez long)...

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 36
    Points : 34
    Points
    34
    Par défaut
    Salut,
    Ton problème n'est pas causé par visual studio.
    est ce que tu nous montrer le code.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je pense que tu dois avoir un problème de réinitialisation de ta listView, quand tu changes de type d'affichage.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    Voici une partie du code :
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
            FolderBrowserDialog repdialog = new FolderBrowserDialog();
            string ext = "*.*";
     
            private void detailsToolStripMenuItem_Click(object sender, EventArgs e)
            {
                try
                {
                    imageList1.Dispose();
                    imageList1 = new ImageList();
                    listView1.GridLines = true;
                    repdialog.RootFolder = Environment.SpecialFolder.MyPictures;
                    repdialog.ShowDialog();
                    DirectoryInfo dir = new DirectoryInfo(repdialog.SelectedPath);
                    label1.Text = repdialog.SelectedPath;          
                    listView1.View = View.Details;
                    listView1.Columns.Add("Nom ");
                    listView1.Columns[0].Width = 300;
                    listView1.Columns.Add("Taille");
                    listView1.Columns[1].Width = 100;
                    listView1.Columns.Add("Date de création ");
                    listView1.Columns[2].Width = 150;
                    listView1.Columns.Add("Chemin ");
                    listView1.Columns[3].Width = 400;
                    trouve(repdialog.SelectedPath);
                    listView1.Refresh();
                }
                catch { }
     
            }
     
            private void grandesIconesToolStripMenuItem_Click_1(object sender, EventArgs e)
            {
                Cursor.Current = Cursors.WaitCursor;         
                listView1.Refresh();//
                imageList1.Dispose(); imageList1 = new ImageList();
                listView1.LargeImageList = imageList1;
                listView1.View = View.LargeIcon;
                imageList1.ImageSize = new Size(112, 150);
                repdialog.RootFolder = Environment.SpecialFolder.MyPictures;
                repdialog.ShowDialog();
                DirectoryInfo dir = new DirectoryInfo(repdialog.SelectedPath);
                label1.Text = repdialog.SelectedPath;      
                trouve(repdialog.SelectedPath);
                listView1.Refresh();
                ResetCursor();
     
            }
     
            int j = 0;
            private void trouve(string s)
            {
                try
                {
                    DirectoryInfo dir = new DirectoryInfo(s);
                    FileInfo[] imageFiles = dir.GetFiles(ext);
                    foreach (FileInfo f in imageFiles)
                    {                               //**
                        if (listView1.View == View.List)
                        {
                            int i = 0;
                            ListViewItem item1 = new ListViewItem(f.Name, i);
                            listView1.Items.Add(item1);
                            item1.Tag = f.FullName;
                            i++;
                        }
                        else
                        {                   //hors list
                            if (listView1.View == View.Details)
                            {               //debut details
                                int i = 0;
                                ListViewItem item1 = new ListViewItem(f.Name, i);
                                item1.ForeColor = Color.DarkBlue;
                                if (f.Length < 1028) item1.SubItems.Add(f.Length + " oct");
                                else
                                {
                                    if (f.Length < 1028 * 1028) item1.SubItems.Add(f.Length / 1028 + " Ko");
                                    else
                                    {
                                        double a = f.Length / (1028.0 * 1028.0);
                                        item1.SubItems.Add(string.Format("{0:##.##}", a) + " Mo");
                                    }
                                }
                                item1.UseItemStyleForSubItems = false;
                                item1.SubItems[1].ForeColor = Color.Black;
                                item1.SubItems.Add(System.IO.File.GetCreationTime(f.FullName).ToString());
                                item1.SubItems.Add(f.Directory.ToString());
                                listView1.Items.Add(item1);
                                item1.Tag = f.FullName;
                                i++;
                            }                                   //fin details
     
                            else//grandes et petites icones
                            {
                                if (f.Length > 0)
                                {
                                 using (var fs = File.OpenRead(f.FullName))
                               {
                                   imageList1.Images.Add(Image.FromStream(fs, true, true));
                                  }
     
                                    listView1.Items.Add(f.Name, j);
                                    listView1.Items[j].Tag = f.FullName;
                                    j++;
                                }
                            }
     
     
                        }//fin hors list
                    } //fin foreach **
     
                    DirectoryInfo[] sousrep = dir.GetDirectories();
                    foreach (DirectoryInfo rep in sousrep)
                    {
                        if (listView1.View == View.Details)
                        {
                            ListViewItem itemx = new ListViewItem("");
                            itemx.SubItems.Add("");
                            itemx.SubItems.Add("");
                            listView1.Items.Add(itemx);
                            itemx = new ListViewItem(rep.FullName);
                            FileInfo[] g = rep.GetFiles(ext);
                            if (g.Length != 0)
                            {
                                itemx.SubItems[0].BackColor = Color.FromArgb(192, 197, 245);
                                itemx.SubItems.Add("");
                                // itemx.UseItemStyleForSubItems = false;
                                itemx.SubItems.Add("");
                                listView1.Items[j].Tag = "Repertoire";
                                itemx.SubItems[0].BackColor = Color.FromArgb(192, 197, 245);
                                listView1.Items.Add(itemx);
     
                            }
                        }
                        trouve(rep.FullName);
                    }
                }
                catch { }
            }

  5. #5
    Invité
    Invité(e)
    Par défaut
    A la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    imageList1.Dispose();
    imageList1 = new ImageList();
    écrit plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(imageList1 == null) {
       imageList1 = new ImageList();
    }
    imageList1.Images.clear();
    Et avant la définition des colonnes de ta listView
    Ajoute la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listView1.Columns.Clear()

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    J'ai coorigé
    Pour moi ça ne marche pas, l'afffichage semble irrationnel...

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    J'ai trouvé une méthode, pour réinitialiser la listview avec un compteur que je remet à zéro

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/12/2011, 17h58
  2. [AJAX] Affichage d'une infobulle : Comportement étrange
    Par patricklinden dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/10/2007, 00h36
  3. Réponses: 1
    Dernier message: 16/07/2007, 10h54
  4. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 20h44
  5. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 22h27

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