利用C#鼠標拖動TreeView節點
作者:尋找GIS
我們將介紹如何利用C#鼠標拖動TreeView節點,這些節點的訪問,一般都需要進行遍歷或其他操作。希望本文能對大家有所幫助。
我們將談論C#鼠標拖動TreeView節點的問題,一般需要實現左鍵拖動,然后就是激發。C#鼠標拖動就是根據鼠標坐標確定要移動到的目標節點。
- private void TVdepartment_ItemDrag(object sender, ItemDragEventArgs e)//左鍵拖動
- {
- 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)//拖動
- { //獲得拖放中的節點
- 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.TVdepartment.GetNodeAt(pt);
- //如果目標節點無子節點則添加為同級節點,反之添加到下級節點的未端
- 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);
- }
- //更新當前拖動的節點選擇
- TVdepartment.SelectedNode = NewMoveNode;
- //展開目標節點,便于顯示拖放效果
- targeNode.Expand();
- //移除拖放的節點
- moveNode.Remove();
- }
利用C#鼠標拖動TreeView節點就介紹到這里。
【編輯推薦】
責任編輯:彭凡
來源:
博客園