using System;

 

using System.Collections.Generic;

 

using System.Text;

 

using System.Windows.Forms;

 

using System.Drawing;

 

namespace ditu.source

 

{

 

class dragTreeViewNode:Form

 

{

 

private TreeView treeView;

 

private EventArgs dragEvent = new EventArgs();

 

public EventArgs DragEvent

 

{

 

get

 

{

 

return this.dragEvent;

 

}

 

set

 

{

 

dragEvent = value;

 

}

 

}

 

public dragTreeViewNode()

 

{



 

}

 

public dragTreeViewNode(object obj)

 

{

 

treeView = (TreeView)obj;

 

}

 

/// <summary>

 

/// //向上拖動

 

/// </summary>

 

/// <param name="sender"></param>

 

/// <param name="e"></param>

 

public void MiMoveUp_Click(object sender, EventArgs e)//向上拖動

 

{

 

TreeNode Node = TreeView.SelectedNode;
TreeNode PrevNode = Node.PrevNode;
if (PrevNode != null)
{

 

TreeNode NewNode = (TreeNode)Node.Clone();
if (Node.Parent == null)
{
TreeView.Nodes.Insert(PrevNode.Index, NewNode);
}
else
{
Node.Parent.Nodes.Insert(PrevNode.Index, NewNode);
}
Node.Remove();
TreeView.SelectedNode = NewNode;
}



 

}

 

/// <summary>

 

/// //向下移動

 

/// </summary>

 

/// <param name="sender"></param>

 

/// <param name="e"></param>

 

public void MiMoveDown_Click(object sender, EventArgs e)//向下移動

 

{

 

TreeView treeView = (TreeView)sender;

 

TreeNode node = treeView.SelectedNode;

 

TreeNode nextNode = node.NextNode;

 

string newNodeName = null;

 

if (nextNode != null)

 

{

 

TreeNode newNode = (TreeNode)node.Clone();

 

if (node.Parent == null)

 

{

 

treeView.Nodes.Insert(nextNode.Index+1, newNodeName);

 

}

 

else

 

{

 

node.Parent.Nodes.Insert(nextNode.Index+1, newNodeName);

 

}

 

node.Remove();

 

treeView.SelectedNode = newNode;

 

}

 

}

 

//拖動代碼

 

/// <summary>

 

/// //左鍵拖動

 

/// </summary>

 

/// <param name="sender"></param>

 

/// <param name="e"></param>

 

public void TreeView_ItemDrag(object sender, ItemDragEventArgs e)//左鍵拖動

 

{

 

if (e.Button == MouseButtons.Left)

 

{

 

DoDragDrop(e.Item,DragDropEffects.Move);

 

}

 

}

 

/// <summary>

 

/// //判斷拖動物件

 

/// </summary>

 

/// <param name="sender"></param>

 

/// <param name="e"></param>

 

public void treeView_DragEnter(object sender, DragEventArgs e)//判斷拖動物件

 

{

 

if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode"))

 

{

 

e.Effect = DragDropEffects.Move;

 

}

 

else

 

{

 

e.Effect = DragDropEffects.None;

 

}

 

}

 

/// <summary>

 

/// //拖動

 

/// </summary>

 

/// <param name="sender"></param>

 

/// <param name="e"></param>

 

public void treeView_DragDrop(object sender, DragEventArgs e)//拖動

 

{

 

string newMoveNodeName=null;

 

TreeView treeView = (TreeView)sender;

 

TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");//獲得拖放中的節點

 

//根據滑鼠座標確定要移動到目標節點

 

Point pt;

 

TreeNode targetNode;

 

pt = ((TreeView)(sender)).PointToClient(new Point(e.X, e.Y));

 

targetNode = treeView.GetNodeAt(pt.X, pt.Y);

 

//如果目標節點無子節點則添加為同級節點,反之添加到下級節點的未端

 

TreeNode newMoveNode = (TreeNode)moveNode.Clone();

 

if (targetNode.Nodes.Count == 0)

 

{

 

targetNode.Parent.Nodes.Insert(targetNode.Index, newMoveNodeName);

 

}

 

else

 

{

 

targetNode.Nodes.Insert(targetNode.Nodes.Count, newMoveNodeName);

 

}

 

//更新當前拖動的節點選擇

 

treeView.SelectedNode = (TreeNode)newMoveNode;

 

//展開目標節點,便於顯示拖放效果

 

targetNode.Expand();

 

//移除拖放的節點

 

moveNode.Remove();

 

}

 

}

 

}
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()