- ///<summary>
- ///上移
- ///</summary>
- ///<paramname="sender"></param>
- ///<paramname="e"></param>
- privatevoidtsbMoveUp_Click(objectsender,EventArgse)
- {
- if(Tv_tree.SelectedNode==null)
- {
- MessageBox.Show("请选择需要移动的的节点!");
- this.Focus();
- return;
- }
- foldermodel=newfolder();
- TreeNodenode=Tv_tree.SelectedNode;//获得选中节点的值
- model.folderId=node.Tag.ToString();
- model.TheOrder=node.Name.ToString();
- if(node.PrevNode==null)//选中节点的上一个节点为Null则返回
- {
- return;
- }
- folderupModel=newfolder();
- TreeNodeupNode=node.PrevNode;//获得选中节点的上一个节点
- upModel.folderId=upNode.Tag.ToString();
- upModel.TheOrder=upNode.Name;
- boolflag=folderOperation.MoveUp(model,upModel);//将两个节点的排序编号互换
- if(flag)//如果执行成功
- {
- stringtheOrder=node.Name;
- node.Name=upNode.Name;
- upNode.Name=theOrder;
- TreeNodenewNode=(TreeNode)node.Clone();//克隆选中的节点
- if(node.Parent==null)
- {
- Tv_tree.Nodes.Insert(upNode.Index,newNode);//在选中节点的上一个节点的地方插入本节点
- }
- else
- {
- node.Parent.Nodes.Insert(upNode.Index,newNode);
- }
- node.Remove();
- Tv_tree.SelectedNode=newNode;
- }
- else
- {
- return;
- }
- }
- ///<summary>
- ///下移
- ///</summary>
- ///<paramname="sender"></param>
- ///<paramname="e"></param>
- privatevoidtsbMoveDown_Click(objectsender,EventArgse)
- {
- if(Tv_tree.SelectedNode==null)
- {
- MessageBox.Show("请选择需要移动的的节点!");
- this.Focus();
- return;
- }
- foldermodel=newfolder();
- TreeNodenode=Tv_tree.SelectedNode;//选中的节点
- model.folderId=node.Tag.ToString();
- model.TheOrder=node.Name.ToString();
- if(node.NextNode==null)//下一个节点为Null时返回
- {
- return;
- }
- folderdownModel=newfolder();
- TreeNodedowNode=node.NextNode;
- downModel.folderId=dowNode.Tag.ToString();
- downModel.TheOrder=dowNode.Name;
- boolflag=folderOperation.MoveUp(model,downModel);
- if(flag)
- {
- stringtheOrder=node.Name;
- node.Name=dowNode.Name;
- dowNode.Name=theOrder;
- TreeNodenewNode=(TreeNode)dowNode.Clone();//克隆下一个节点及其所有的子节点
- if(node.Parent==null)
- {
- Tv_tree.Nodes.Insert(node.Index,newNode);//在原节点的位置插入下一个节点的值
- }
- else
- {
- node.Parent.Nodes.Insert(node.Index,newNode);
- }
- dowNode.Remove();//删除掉选中节点的下一个节点
- Tv_tree.SelectedNode=node;//重新选中
- }
- else
- {
- return;
- }
- }
- stringsql=string.Format("updatefoldersettheorder='{0}'wherefolderid='{1}'",model.TheOrder,upModel.folderId);
- stringsql1=string.Format("updatefoldersettheorder='{0}'wherefolderid='{1}'",upModel.TheOrder,model.folderId);
- ///<summary>
- ///节点的展开和折叠
- ///</summary>
- ///<paramname="sender"></param>
- ///<paramname="e"></param>
- privatevoidtvDocInfo_AfterExpand(objectsender,TreeViewEventArgse)
- {
- if(e.Node.Parent==null)
- {
- TreeViewtree=(TreeView)sender;
- tree.AfterCheck-=newTreeViewEventHandler(this.tvDocInfo_AfterExpand);
- //折叠其他同级节点
- TreeNodeparentNode=e.Node.Parent;
- if(parentNode!=null)
- {
- foreach(TreeNodetninparentNode.Nodes)
- {
- if(tn!=e.Node)
- tn.Collapse();
- }
- }
- else
- {
- foreach(TreeNodetnintree.Nodes)
- {
- if(tn!=e.Node)
- tn.Collapse();
- }
- }
- }
- }
节点拖拽,必须设置TreeView的AllowDrop属性为True;
- privatePointPosition=newPoint(0,0);
- privatevoidtreeView1_ItemDrag(objectsender,ItemDragEventArgse)
- {
- DoDragDrop(e.Item,DragDropEffects.Move);
- }
- privatevoidtreeView1_DragEnter(objectsender,DragEventArgse)
- {
- if(e.Data.GetDataPresent(typeof(TreeNode)))
- e.Effect=DragDropEffects.Move;
- else
- e.Effect=DragDropEffects.None;
- }
- privatevoidtreeView1_DragDrop(objectsender,DragEventArgse)
- {
- TreeNodemyNode=null;
- if(e.Data.GetDataPresent(typeof(TreeNode)))
- {
- myNode=(TreeNode)(e.Data.GetData(typeof(TreeNode)));
- }
- else
- {
- MessageBox.Show("error");
- }
- Position.X=e.X;
- Position.Y=e.Y;
- Position=tvType.PointToClient(Position);
- TreeNodeDropNode=this.tvType.GetNodeAt(Position);
- if(FunctionsUI.CreateQuestionDialog("是否要将"+myNode.Text+"移动"+DropNode.Text+"类别下?")==DialogResult.OK)
- {
- //1.目标节点不是空。2.目标节点不是被拖拽接点的字节点。3.目标节点不是被拖拽节点本身
- if(DropNode!=null&&DropNode.Parent!=myNode&&DropNode!=myNode)
- {
- TreeNodeDragNode=myNode;
- //将被拖拽节点从原来位置删除。
- myNode.Remove();
- //在目标节点下增加被拖拽节点
- DropNode.Nodes.Add(DragNode);
- }
- //如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下
- if(DropNode==null)
- {
- TreeNodeDragNode=myNode;
- myNode.Remove();
- tvType.Nodes.Add(DragNode);
- }
- }
- }