Yes, it's possible, using standard techniques, to detect a 'Drop of any type of Object on the surface of a UserControl, and it's possible to detect the Type of the Object dropped:
private void YourUserControl1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetFormats().Contains("System.Windows.Forms.ListViewItem"))
{
ListViewItem droppedLVItem = e.Data.GetData(typeof (ListViewItem)) as ListViewItem;
ListViewItem clonedItem = (ListViewItem) droppedLVItem.Clone();
}
}
private void YourUserControl1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
So: let's say you detect a drop of a ListViewItem at position 100,200 in your UserControl, and there's no Control at that location that could "swallow" the drop (like another ListView): what do you want to show/create in the UserControl at that point ?
A ListViewItem is
not a Control: you can't add it to the UserControl's Control Collection.
So, what do you want to do: construct some new user-interface object, and put some representation of the ListViewItem's data into, or on, it ?
Or, do you wish to use the ListViewItem's data to make changes in your UserControl's other Controls, or data-structures ?
Voting on solutons, and choosing an accepted solution when you get a response that answers your question to your complete satisfaction, is a way you can contribute to the long-run value of QA on CodeProject.