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