2013-08-13 3 views
1

J'essaie d'obtenir des informations sur les fichiers sélectionnés et de lister leurs propriétés (telles que le nom et la longueur) dans un ListBox, mais je n'ai pas réussi à comprendre comment le faire. J'ai écrit ce code, mais cela ne répond pas à mes attentes. Comment est-ce que je peux faire ceci avec un DictionaryList?Comment afficher les informations sur SelectedFile

private void button1_Click(object sender, EventArgs e) 
{ 
    FileInfo fi = null; 
    // Dictionary<string, int> info = new Dictionary<string, int>(); 
    openFileDialog1.Multiselect = true; 
    if (openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 

     foreach (string file in openFileDialog1.FileNames) 
     { 
      listBox1.Items.Add(fi = new FileInfo(file)); 

     } 
    } 
} 
+1

Il n'y a rien appelé assez célèbre 'DictionaryList' être référençables passingly . – xanatos

Répondre

0

essayer de tirer quelques membres de la classe FileInfo pour afficher dans votre ListBox. Changer

listBox1.Items.Add(fi = new FileInfo(file)); 

à

var info = new FileInfo(file); 
listBox1.Items.Add(String.Format("Filename: {0} Size: {1}", info.Name, info.Length)); 

Quant à l'utilisation d'un dictionnaire, vous pouvez définir un dictionnaire quelque part:

Dictionary<string,FileInfo> fileInfoDictionary = new Dictionary<string,FileInfo>(); 

Ensuite, ajoutez vos objets FileInfo en elle:

foreach (string file in openFileDialog1.FileNames) 
{ 
    fileInfoDictionary[file] = new FileInfo(file); 
} 

Et puis à la fin point r utiliser les informations (sans avoir à sortir à nouveau le système de fichiers):

Console.WriteLine(fileInfoDictionary[@"c:\autoexec.bat"].Length); 

La ligne droite, il afficherait la taille du fichier de autoexec.bat, si elle existait. Sinon, cette ligne lancerait un KeyNotFoundException.

Sinon, si tout ce que vous inquiétiez était la taille du fichier, vous pouvez déclarer votre dictionnaire comme vous avez dans votre message:

Dictionary<string,int> fileSizeDict = new Dictionary<string,int>(); 
// ... 
fileSizeDict[file] = new FileInfo(file).Length; 
// ... 
Console.WriteLine(String.Format("The length of autoexec.bat is {0}", fileSizeDict["@c:\autoexec.bat"])); 
+0

Merci Steve – user2583511

+0

Pas de problème, merci pour l'accepter. Seulement 16 rep à 1k! il h... – Steve

Questions connexes