2010-12-01 17 views
0

J'ai un Listview et un bouton "AJOUTER", quand je clique sur AJOUTER je devrais être capable de parcourir les fichiers dans l'ordinateur, sélectionner les fichiers et quand cliquer OK ou l'Ouvrir, la liste des fichiers devrait être ajouté dans la listview ... comment faire ça ... est-ce que listview est correct ou toute autre alternative ...?ajouter des fichiers à listview en C#

+1

Quel type d'application est-ce? Windows Forms? ASP.NET? WPF? – JeffFerguson

Répondre

3

ListView devrait être bien pour la liste des fichiers. Sachez simplement que les chemins de fichiers plus longs sont difficiles à voir (il faut faire défiler horizontalement ce qui est mauvais!) Si vous allez juste ajouter le chemin complet à la liste. Vous pouvez jouer avec l'idée d'une autre représentation comme:

File.Txt (C:\Users\Me\Documents) 
C:\Users\..\File.Txt 
etc 

En ce qui le faire en utilisant le code est concerné, vous devez utiliser OpenFileDialog contrôle pour permettre à l'utilisateur de choisir les fichiers.

var ofd = new OpenFileDialog(); 
//add extension filter etc 
ofd.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ; 
if(ofd.ShowDialog() == DialogResult.OK) 
{ 
    foreach (var f in openFileDialog1.FileNames) 
    { 
     //Transform the list to a better presentation if needed 
     //Below code just adds the full path to list 
     listView1.Items.Add (f); 

     //Or use below code to just add file names 
     //listView1.Items.Add (Path.GetFileName (f)); 
    } 
} 
+1

Pour plus d'informations et quelques stratégies différentes sur les chemins de raccourcissement, consultez Jeff [blog post] (http://www.codinghorror.com/blog/2006/08/shortening-long-file-paths.html) sur le assujettir. L'essentiel est que vous pouvez utiliser une expression régulière ou l'API ['PathCompactPathEx'] (http://msdn.microsoft.com/en-us/library/bb773578.aspx) pour le faire automatiquement. –

+0

@hemanth: thanx ... comment puis-je afficher uniquement le nom de fichier sélectionné? –

+0

Vous voulez dire uniquement le (s) fichier (s) sélectionné (s) par l'utilisateur? Ne t'en fais pas! La propriété FileNames du contrôle OpenFileDialog renvoie un tableau de chemins de fichier sélectionnés par l'utilisateur. Si l'utilisateur sélectionne un seul fichier, ce tableau ne contiendra qu'un seul élément. – Hemant

2

Si vous voulez faire dans le concepteur, vous pouvez prendre les mesures suivantes pour ajouter les images au contrôle ListView:

  1. Passer au concepteur, cliquez sur le composant ImageList sur la Component Tray, une balise active apparaît dans le coin supérieur droit de la liste ImageList.
  2. Cliquez sur la balise active, puis sur "Choisir des images" dans le volet.
  3. Dans la boîte de dialogue de l'Editeur d'images, sélectionnez les images du dossier de votre choix.
  4. Cliquez sur OK pour terminer l'ajout d'images à ImageList.
  5. Cliquez sur le ListView sur le formulaire, il y aura une balise active dans le coin supérieur droit.
  6. Cliquez sur la balise active, vous trouverez trois zones de liste déroulante, choisissez une liste d'images dans la liste comme vous le souhaitez.
  7. Cliquez sur l'option Ajouter des éléments sur la balise active, un éditeur de collection ListViewItem apparaîtra, vous pouvez ajouter des éléments à ListView, il est important ici de définir la propriété ImageIndex ou ImageKey ou l'image n'apparaîtra pas.
  8. Cliquez sur OK pour terminer l'édition de l'élément, vous trouverez maintenant les images affichées dans ListView.

Si vous souhaitez ajouter les images au ListView par code, vous pouvez faire quelque chose comme ça

donner le code suivant dans addButton_click

 var fdlg = new OpenFileDialog(); 
     fdlg.Multiselect = true; 
     fdlg.Title = "Select a file to add... "; 
     fdlg.InitialDirectory = "C:\\"; 
     fdlg.Filter = "All files|*.*"; 
     fdlg.RestoreDirectory = true; 
     if (fdlg.ShowDialog() == DialogResult.OK) 
     { 
      foreach (var files in fdlg.FileNames) 
      { 
       try 
       { 
        this.imageList1.Images.Add(Image.FromFile(files)); 
       } 

       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
      } 
      this.listView1.View = View.LargeIcon; 
      this.imageList1.ImageSize = new Size(32, 32); 
      this.listView1.LargeImageList = this.imageList1; 
      //or 
      //this.listView1.View = View.SmallIcon; 
      //this.listView1.SmallImageList = this.imageList1; 
      for (int j = 0; j < this.imageList1.Images.Count; j++) 
      { 
       ListViewItem item = new ListViewItem(); 
       item.ImageIndex = j; 
       this.listView1.Items.Add(item); 
      } 
     } 
+0

@pavan: merci pour cela ... En fait, je voulais ajouter juste des noms de fichiers ... pas d'images ... de toute façon qui a également aidé ... thx –