Index: Core/Common/src/Core.Common.Controls.TreeView/DragDropHandler.cs
===================================================================
diff -u -red0efdcfe1c041f58f65ac59a18c42bd1df9f1ff -r7b47bd7322094ce1af65e2d69ccc154d58d297e6
--- Core/Common/src/Core.Common.Controls.TreeView/DragDropHandler.cs (.../DragDropHandler.cs) (revision ed0efdcfe1c041f58f65ac59a18c42bd1df9f1ff)
+++ Core/Common/src/Core.Common.Controls.TreeView/DragDropHandler.cs (.../DragDropHandler.cs) (revision 7b47bd7322094ce1af65e2d69ccc154d58d297e6)
@@ -62,7 +62,7 @@
var point = treeView.PointToClient(new Point(e.X, e.Y));
TreeNode nodeOver = treeView.GetNodeAt(point);
- var draggedNode = (TreeNode) e.Data.GetData(typeof(TreeNode));
+ var draggedNode = GetDraggedNodeData(e);
if (nodeOver == null)
{
@@ -107,18 +107,18 @@
var point = treeView.PointToClient(lastDragOverPoint);
TreeNode nodeOver = treeView.GetNodeAt(point);
- var draggedNode = (TreeNode) e.Data.GetData(typeof(TreeNode));
+ var draggedNode = GetDraggedNodeData(e);
- if (nodeOver == null || draggedNode == null || nodeOver == draggedNode || IsDropTargetChildOfDraggedNode(nodeOver, draggedNode))
+ if (draggedNode == null || nodeOver == null || nodeOver == draggedNode || IsDropTargetChildOfDraggedNode(nodeOver, draggedNode))
{
RemovePlaceHolder(treeView);
-
+ e.Effect = DragDropEffects.None;
return;
}
ScrollIntoView(point, nodeOver, treeView);
- PlaceholderLocation placeholderLocation = GetPlaceHoldersLocation(treeView, draggedNode, nodeOver, e, getTreeNodeInfoForData);
+ PlaceholderLocation placeholderLocation = GetPlaceHoldersLocation(treeView, draggedNode, nodeOver, getTreeNodeInfoForData);
if (nodeDropTarget == null)
{
@@ -132,6 +132,9 @@
if (placeholderLocation == PlaceholderLocation.None)
{
+ RemovePlaceHolder(treeView);
+ e.Effect = DragDropEffects.None;
+
return;
}
@@ -147,6 +150,18 @@
}
}
+ private static TreeNode GetDraggedNodeData(DragEventArgs e)
+ {
+ try
+ {
+ return (TreeNode) e.Data.GetData(typeof(TreeNode));
+ }
+ catch (InvalidCastException)
+ {
+ return null;
+ }
+ }
+
///
/// This method handles the event for a .
///
@@ -265,7 +280,7 @@
}
}
- private PlaceholderLocation GetPlaceHoldersLocation(FormsTreeView treeView, TreeNode nodeDragging, TreeNode nodeOver, DragEventArgs e, Func