利用C#鼠標(biāo)拖動(dòng)TreeView節(jié)點(diǎn)
作者:尋找GIS
我們將介紹如何利用C#鼠標(biāo)拖動(dòng)TreeView節(jié)點(diǎn),這些節(jié)點(diǎn)的訪問,一般都需要進(jìn)行遍歷或其他操作。希望本文能對(duì)大家有所幫助。
我們將談?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)則添加為同級(jí)節(jié)點(diǎn),反之添加到下級(jí)節(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é)任編輯:彭凡
來源:
博客園