以下是节点移动类NodeMove.cs源码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace NodeMove
{
class NodeMove
{
private void MovUp(TreeNode ObjNode)
{
//----节点的向上移动
if (ObjNode != null)
{
TreeNode newnode = new TreeNode();
//--------如果选中节点为最顶节点
if (ObjNode.Index == 0)
{
//-------------
}
else if (ObjNode.Index != 0)
{
newnode = (TreeNode)ObjNode.Clone();
//-------------若选中节点为根节点
if (ObjNode.Level == 0)
{
treeView1.Nodes.Insert(ObjNode.PrevNode.Index, newnode);
}
//-------------若选中节点并非根节点
else if (ObjNode.Level != 0)
{
ObjNode.Parent.Nodes.Insert(ObjNode.PrevNode.Index, newnode);
}
ObjNode.Remove();
ObjNode = newnode;
}
}
}
private void MovDown(TreeNode ObjNode)
{
//----节点的向下移动
if (ObjNode != null)
{
TreeNode newnode = new TreeNode();
//-------------如果选中的是根节点
if (ObjNode.Level == 0)
{
//---------如果选中节点为最底节点
if (ObjNode.Index == treeView1.Nodes.Count - 1)
{
//---------------
}
//---------如果选中的不是最底的节点
else
{
newnode = (TreeNode)ObjNode.Clone();
treeView1.Nodes.Insert(ObjNode.NextNode.Index + 1, newnode);
ObjNode.Remove();
ObjNode = newnode;
}
}
//-------------如果选中节点不是根节点
else if (ObjNode.Level != 0)
{
//---------如果选中最底的节点
if (ObjNode.Index == ObjNode.Parent.Nodes.Count - 1)
{
//-----------
}
//---------如果选中的不是最低的节点
else
{
newnode = (TreeNode)ObjNode.Clone();
ObjNode.Parent.Nodes.Insert(ObjNode.NextNode.Index + 1, newnode);
ObjNode.Remove();
ObjNode = newnode;
}
}
}
}
private void MovLeft(TreeNode ObjNode)
{
//-----节点向左移动(即成为原父节点的同级节点)
if (ObjNode != null)
{
TreeNode newnode = new TreeNode();
//-----如果接点是根节点
if (ObjNode.Parent == null)
{
//---------
}
//-----如果选中节点不是根节点
else
{
newnode = (TreeNode)ObjNode.Clone();
//-----如果选中的节点是第一级子节点
if (ObjNode.Level == 1)
{
treeView1.Nodes.Insert(ObjNode.Parent.Index + 1, newnode);
}
else
{
ObjNode.Parent.Parent.Nodes.Insert(ObjNode.Parent.Index + 1, newnode);
}
ObjNode.Remove();
ObjNode = newnode;
}
}
}
private void MovRight(TreeNode ObjNode)
{
//-----节点的向右移动(即成为上一个同级节点的最后一个子节点)
if (ObjNode != null)
{
TreeNode newnode = new TreeNode();
//-----如果节点是叶子节点
if (ObjNode.Nodes.Count == 0 && ObjNode.PrevNode == null)
{
//--------
}
//-----如果节点是第一个根节点
else if (ObjNode.Parent == null && ObjNode.Index == 0)
{
//--------
}
//-----
else
{
newnode = (TreeNode)ObjNode.Clone();
ObjNode.PrevNode.Nodes.Insert(ObjNode.PrevNode.Nodes.Count, newnode);
ObjNode.Remove();
ObjNode = newnode;
}
}
}
}
}
C#实现treeview节点上下左右自由移动
原创
©著作权归作者所有:来自51CTO博客作者思月行云的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章