Bonjour,
Je tourne en rond depuis un moment sur un problème de drag&drop.
J'ai un Listview qui affiche des noms de fichiers d'un répertoire.
J'ai une listbox que je veux remplir en faisant glisser des éléments du listview.
Voilà mon code :
Dans le dragenter, je ne passe jamais sur " e.Effect = DragDropEffects.Copy;" .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 private void FilesListView_ItemDrag(object sender, ItemDragEventArgs e) { this.FilesListView.DoDragDrop(FilesListView.SelectedItems, DragDropEffects.Copy); } private void listBox1_DragEnter(object sender, DragEventArgs e) { try { ListView.SelectedListViewItemCollection items = (ListView.SelectedListViewItemCollection)e.Data; e.Effect = DragDropEffects.Copy; } catch { e.Effect = DragDropEffects.None; } } private void listBox1_DragDrop(object sender, DragEventArgs e) { try { ListView.SelectedListViewItemCollection items = (ListView.SelectedListViewItemCollection)e.Data; foreach (var item in items) { listBox1.Items.Add((string)(item as ListViewItem).Tag); } } catch { } }
Comme si l'élément passé n'était jamais dans e.data.
Je dois louper un truc mais quoi ?
Papy
Bon, j'ai avancé un peu:
Maintenant DragEnter fonctionne. Mais dans le DragDrop, j'obtiens une erreur de CAST dans " ListViewItem item = (ListViewItem)e.Data;"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private void listBox1_DragEnter(object sender, DragEventArgs e) { e.Effect = e.Data.GetDataPresent(typeof(ListViewItem)) ? DragDropEffects.Copy : DragDropEffects.None; } private void listBox1_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(ListViewItem))) { ListViewItem item = (ListViewItem)e.Data; listBox1.Items.Add((string)item.Tag); } }
Il parait que la conversion est impossible :-(
Partager