//
2009-08-25 Jacky
private
void
treeView2_ItemDrag(
object
sender, ItemDragEventArgs e)
{
if
(e.Button
==
MouseButtons.Left)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
}
private
void
treeView2_DragEnter(
object
sender, DragEventArgs e)
{
if
(e.Data.GetDataPresent(
"
System.Windows.Forms.TreeNode
"
))
{
e.Effect
=
DragDropEffects.Move;
}
else
{
e.Effect
=
DragDropEffects.None;
}
}
private
void
treeView2_DragDrop(
object
sender, DragEventArgs e)
{
//
获得拖放中的节点
TreeNode moveNode
=
(TreeNode)e.Data.GetData(
"
System.Windows.Forms.TreeNode
"
);
//
根据鼠标坐标确定要移动到的目标节点
Point pt;
TreeNode targeNode;
pt
=
((TreeView)(sender)).PointToClient(
new
Point(e.X, e.Y));
targeNode
=
this
.treeView2.GetNodeAt(pt);
//
如果目标节点无子节点则添加为同级节点,反之添加到下级节点的未端
TreeNode NewMoveNode
=
(TreeNode)moveNode.Clone();
//
if (targeNode.Nodes.Count == 0)
//
{
//
targeNode.Nodes.Insert(targeNode.Index, NewMoveNode);
//
}
//
else
//
{
targeNode.Nodes.Insert(targeNode.Nodes.Count, NewMoveNode);
//
}
//
更新当前拖动的节点选择
//
treeView2.SelectedNode = NewMoveNode;
//
展开目标节点,便于显示拖放效果
targeNode.Expand();
//
移除拖放的节点
moveNode.Remove();
}
转载于:https://www.cnblogs.com/superlee/archive/2009/08/25/1553923.html