Dragdrop entre listview et listbox
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 :
Code:
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
{
}
} |
Dans le dragenter, je ne passe jamais sur " e.Effect = DragDropEffects.Copy;" .
Comme si l'élément passé n'était jamais dans e.data.
Je dois louper un truc mais quoi ? :oops:
Papy
Bon, j'ai avancé un peu:
Code:
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);
}
} |
Maintenant DragEnter fonctionne. Mais dans le DragDrop, j'obtiens une erreur de CAST dans " ListViewItem item = (ListViewItem)e.Data;"
Il parait que la conversion est impossible :-(