private void tvFolders_DragDrop(object sender, DragEventArgs e) { DataTreeView tv = (DataTreeView)sender; if (e.Data.GetDataPresent(typeof(DataGridViewSelectedRowCollection))) { Point clientPoint = tv.PointToClient(new Point(e.X, e.Y)); TreeNode selectedNode = tv.GetNodeAt(clientPoint); ITreeItems treeItems = (ITreeItems)dgvTreeItems.DataSource; ITreeItem selectedItem = treeItems.FirstOrDefault(i => i.IdString == selectedNode.Tag.ToString()); if (selectedItem is IFolder) { IFolder parent = selectedItem as IFolder; IContacts contacts = (IContacts)dgvContacts.DataSource; foreach (DataGridViewRow dgvr in (DataGridViewSelectedRowCollection)e.Data.GetData(typeof(DataGridViewSelectedRowCollection))) { IContact contact = (IContact)dgvr.DataBoundItem; List <ITreeItem> items = contacts.CreateLink(parent, contact); } } } }