Plantage du prog

shinevilkyo Messages postés 52 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 3 août 2004 - 7 nov. 2003 à 16:38
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 - 11 nov. 2003 à 03:05
lu all,
j ai code un explorateur win en csharp eilmarche super sur le dd ou sur tt disque logique mais kan le contenue est trop gros a afficher ds une listview il plante mechament comment faire je ne sais po faut t il alloue de la memoire ou revoir ma facon de lister le contenu merci de m aider.
using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

class FileListView: ListView
{
     string strDirectory;

     public FileListView()
     {
          View = View.Details;
  Image image;
  Image image2;
  
   //image = Image.FromFile("C:\\DOC.BMP");
   //image2 = Image.FromFile("C:\\EXE.BMP");
               // Get images for file icons.

          ImageList imglst = new ImageList();
          //imglst.Images.Add(image);
          //imglst.Images.Add(image2);

          SmallImageList = imglst;
          LargeImageList = imglst;

               // Create columns.

          Columns.Add("Name",      100, HorizontalAlignment.Left);
          Columns.Add("Size",      100, HorizontalAlignment.Right);
          Columns.Add("Modified",  100, HorizontalAlignment.Left);
     }
     public void ShowFiles(string strDirectory)
     {
               // Save directory name as field.
               
          this.strDirectory = strDirectory;

          Items.Clear();
          DirectoryInfo dirinfo = new DirectoryInfo(strDirectory);
          FileInfo[] afileinfo;

          try
          {
               afileinfo = dirinfo.GetFiles();
          }
          catch
          {
               return;
          }

          foreach (FileInfo fi in afileinfo)
          {
                    // Create ListViewItem.

               ListViewItem lvi = new ListViewItem(fi.Name);

                    // Assign ImageIndex based on filename extension.

               if (Path.GetExtension(fi.Name).ToUpper() == ".EXE")
                    lvi.ImageIndex = 1;
               else
                    lvi.ImageIndex = 0;

                   

               lvi.SubItems.Add(fi.Length.ToString("N0"));
               lvi.SubItems.Add(fi.LastWriteTime.ToString());
                   
               Items.Add(lvi);
          }
     }
     protected override void OnItemActivate(EventArgs ea)
     {
          base.OnItemActivate(ea);

          foreach (ListViewItem lvi in SelectedItems)
          {
               try
               {
                    Process.Start(Path.Combine(strDirectory, lvi.Text));
               }
               catch
               {
                    continue;
               }
          }
     }
}



using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

class DirectoryTreeView: TreeView
{
public DirectoryTreeView()
{


Width *= 2;
Image image;
Image image2;
Image image3;
image = Image.FromFile("C:\\35FLOPPY.BMP");
image2 = Image.FromFile("C:\\CLSDFOLD.BMP");
image3 = Image.FromFile("C:\\OPENFOLD.BMP");

ImageList = new ImageList();
ImageList.Images.Add(image);
ImageList.Images.Add(image2);
ImageList.Images.Add(image3);



RefreshTree();
}
public void RefreshTree()
{


BeginUpdate();
Nodes.Clear();



string[] astrDrives = Directory.GetLogicalDrives();

foreach (string str in astrDrives)
{
TreeNode tnDrive = new TreeNode(str, 0, 0);
Nodes.Add(tnDrive);
AddDirectories(tnDrive);

if (str == "D:\")
SelectedNode = tnDrive;
else
Nodes.Clear();
}
EndUpdate();
}
void AddDirectories(TreeNode tn)
{
tn.Nodes.Clear();

string strPath = tn.FullPath;
DirectoryInfo dirinfo = new DirectoryInfo(strPath);
DirectoryInfo[] adirinfo;

try
{
adirinfo = dirinfo.GetDirectories();
}
catch
{
return;
}

foreach (DirectoryInfo di in adirinfo)
{
TreeNode tnDir = new TreeNode(di.Name, 1, 2);
tn.Nodes.Add(tnDir);


}
}
protected override void OnBeforeExpand(TreeViewCancelEventArgs tvcea)
{
base.OnBeforeExpand(tvcea);

BeginUpdate();

foreach (TreeNode tn in tvcea.Node.Nodes)
AddDirectories(tn);

EndUpdate();
}
}

voila le plus important du code

1 réponse

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
11 nov. 2003 à 03:05
Comme çà c difficile de te dire ...
T sur qu'il plante et qu'il ne met pas du temps a rafraichir simplement ?

Tu peux utiliser des threads pour mettre en paralelles l'execution des taches.

Sinon regarde si tu n'a pas une propriété sorted qui a la valeur TRUE , ce qui ralentie enormement les composants.

::|The S@ib|::
MVP C#.NET
0
Rejoignez-nous