利用C#鼠標(biāo)拖動(dòng)TreeView節(jié)點(diǎn)
作者:尋找GIS 
  我們將介紹如何利用C#鼠標(biāo)拖動(dòng)TreeView節(jié)點(diǎn),這些節(jié)點(diǎn)的訪問,一般都需要進(jìn)行遍歷或其他操作。希望本文能對大家有所幫助。
 我們將談?wù)揅#鼠標(biāo)拖動(dòng)TreeView節(jié)點(diǎn)的問題,一般需要實(shí)現(xiàn)左鍵拖動(dòng),然后就是激發(fā)。C#鼠標(biāo)拖動(dòng)就是根據(jù)鼠標(biāo)坐標(biāo)確定要移動(dòng)到的目標(biāo)節(jié)點(diǎn)。
- private void TVdepartment_ItemDrag(object sender, ItemDragEventArgs e)//左鍵拖動(dòng)
 - {
 - if (e.Button == MouseButtons.Left)
 - {
 - DoDragDrop(e.Item, DragDropEffects.Move);
 - }
 - }
 - private void TVdepartment_DragEnter(object sender, DragEventArgs e)
 - {
 - if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode"))
 - {
 - e.Effect = DragDropEffects.Move;
 - }
 - else
 - {
 - e.Effect = DragDropEffects.None;
 - }
 - }
 - private void TVdepartment_DragDrop(object sender, DragEventArgs e)//拖動(dòng)
 - { //獲得拖放中的節(jié)點(diǎn)
 - TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
 - //根據(jù)鼠標(biāo)坐標(biāo)確定要移動(dòng)到的目標(biāo)節(jié)點(diǎn)
 - Point pt;
 - TreeNode targeNode;
 - pt = ((TreeView)(sender)).PointToClient(new Point(e.X, e.Y));
 - targeNode = this.TVdepartment.GetNodeAt(pt);
 - //如果目標(biāo)節(jié)點(diǎn)無子節(jié)點(diǎn)則添加為同級節(jié)點(diǎn),反之添加到下級節(jié)點(diǎn)的未端
 - TreeNode NewMoveNode = (TreeNode)moveNode.Clone();
 - if (targeNode.Nodes.Count == 0)
 - {
 - targeNode.Parent.Nodes.Insert(targeNode.Index, NewMoveNode);
 - }
 - else
 - {
 - targeNode.Nodes.Insert(targeNode.Nodes.Count, NewMoveNode);
 - }
 - //更新當(dāng)前拖動(dòng)的節(jié)點(diǎn)選擇
 - TVdepartment.SelectedNode = NewMoveNode;
 - //展開目標(biāo)節(jié)點(diǎn),便于顯示拖放效果
 - targeNode.Expand();
 - //移除拖放的節(jié)點(diǎn)
 - moveNode.Remove();
 - }
 
利用C#鼠標(biāo)拖動(dòng)TreeView節(jié)點(diǎn)就介紹到這里。
【編輯推薦】
責(zé)任編輯:彭凡 
                    來源:
                    博客園
 














 
 
 
 
 
 
 