Trascina e rilascia una cartella da Windows Explorer a listBox in C #

Sono riuscito a sviluppare il codice C # per i file di trascinamento da Windows Explorer a ListBox.

// Drag and Drop Files to Listbox private void listBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop, false)) e.Effect = DragDropEffects.All; else e.Effect = DragDropEffects.None; } private void listBox1_DragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false); foreach (string fileName in files) { listBox1.Items.Add(fileName); } } 

Se trascino una cartella in ListBox, tutti i file che si trovano nella cartella devono essere aggiunti agli oggetti ListBox.

Sarebbe molto utile per me se qualcuno mi può fornire il frammento di codice per il compito di cui sopra.

Grazie in anticipo.

    Il codice per DragEnter si applica ancora alle cartelle.

    Nell’evento DragDrop , si recuperano percorsi di file e percorsi di cartella nello stesso modo. Se si trascinano combinazioni di file e cartelle, verranno visualizzati tutti nella matrice di files . Hai solo bisogno di determinare se i percorsi sono o meno cartelle.

    Il codice seguente recupererà tutti i percorsi di tutti i file dalla radice di tutte le cartelle eliminate e i percorsi di tutti i file eliminati.

      private void listBox1_DragDrop(object sender, DragEventArgs e) { List filepaths = new List(); foreach (var s in (string[])e.Data.GetData(DataFormats.FileDrop, false)) { if (Directory.Exists(s)) { //Add files from folder filepaths.AddRange(Directory.GetFiles(s)); } else { //Add filepath filepaths.Add(s); } } } 

    Si noti che verranno raccolti solo i file nella cartella principale delle cartelle. Se è necessario recuperare tutti i file nell’albero delle cartelle, è necessario eseguire un po ‘di ricorsione per raccoglierli tutti.

    se fileName è una directory puoi creare un object DirectoryInfo e scorrere tutti i file (e sottodirectory)

    puoi dare un’occhiata a questo codice:

    http://weblogs.asp.net/israelio/archive/2004/06/23/162913.aspx

    (non è necessario utilizzare un object DirectoryInfo , è inoltre ansible utilizzare i metodi statici della class Directory