我有一个带有ListView的应用程序,我从资源管理器中删除了一些文件。 Object被视为FileDrop,因此,我可以使用我放入的所有项目的名称,扩展名和完整路径填充ListView。当我将ListView项目从第一个应用程序拖动到同一个应用程序的第二个实例的ListView时,问题就出现了。该项目作为System .__ ComObject传递,而不是像我想象的那样传递。
如何(以及在何处)我可以在这两个不同的ListView之间拖动一个项目,每个ListView在他们自己的应用程序中,像FileDrop或纯文本一样传递它?
我读了很多关于序列化和其他一些例子的内容,但是对于自我教导似乎都不是很友好...
private void Playlist_ItemDrag(object sender, ItemDragEventArgs e)
{
Playlist.DoDragDrop(Playlist.SelectedItems[0].SubItems[4].Text, DragDropEffects.Move);
}
更多代码:
private void Playlist_DragOver(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text) || e.Data.GetDataPresent(DataFormats.FileDrop))
{
if (e.Data.GetDataPresent(DataFormats.FileDrop)) { this.Externo = true; }
if (e.Data.GetDataPresent(DataFormats.Text)) { this.Externo = false; }
Point cp = Playlist.PointToClient(new Point(e.X, e.Y));
ListViewItem hoverItem = Playlist.GetItemAt(cp.X, cp.Y);
if (hoverItem == null)
{
e.Effect = DragDropEffects.Copy;
return;
}
foreach (ListViewItem moveItem in Playlist.SelectedItems)
{
if (moveItem.Index == hoverItem.Index)
{
e.Effect = DragDropEffects.Move;
hoverItem.EnsureVisible();
return;
}
}
e.Effect = DragDropEffects.Move;
hoverItem.EnsureVisible();
}
}
- 外部或文字 - '如果'声明只是说是否来自ListView内部(因此它将重新排序ListView项目)或来自资源管理器,(因此它会将项目添加到悬停位置)。
谢谢!