/// <summary>
/// 上移
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsbMoveUp_Click(object sender, EventArgs e)
{
if (Tv_tree.SelectedNode == null)
{
MessageBox.Show("请选择需要移动的的节点!");
this.Focus();
return;
}
folder model = new folder();
TreeNode node = Tv_tree.SelectedNode; //获得选中节点的值
model.folderId = node.Tag.ToString();
model.TheOrder = node.Name.ToString();
if (node.PrevNode == null) //选中节点的上一个节点为Null则返回
{
return;
}
folder upModel = new folder();
TreeNode upNode = node.PrevNode; //获得选中节点的上一个节点
upModel.folderId = upNode.Tag.ToString();
upModel.TheOrder = upNode.Name;
bool flag = folderOperation.MoveUp(model, upModel); //将两个节点的排序编号互换
if (flag) //如果执行成功
{
string theOrder = node.Name;
node.Name = upNode.Name;
upNode.Name = theOrder;
TreeNode newNode = (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>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsbMoveDown_Click(object sender, EventArgs e)
{
if (Tv_tree.SelectedNode == null)
{
MessageBox.Show("请选择需要移动的的节点!");
this.Focus();
return;
}
folder model = new folder();
TreeNode node = Tv_tree.SelectedNode; //选中的节点
model.folderId = node.Tag.ToString();
model.TheOrder = node.Name.ToString();
if (node.NextNode == null) //下一个节点为Null时返回
{
return;
}
folder downModel = new folder();
TreeNode dowNode = node.NextNode;
downModel.folderId = dowNode.Tag.ToString();
downModel.TheOrder = dowNode.Name;
bool flag = folderOperation.MoveUp(model, downModel);
if (flag)
{
string theOrder = node.Name;
node.Name = dowNode.Name;
dowNode.Name = theOrder;
TreeNode newNode = (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;
}
} string sql = string.Format("update folder set theorder = '{0}' where folderid = '{1}'", model.TheOrder, upModel.folderId);
string sql1 = string.Format("update folder set theorder = '{0}' where folderid = '{1}'", upModel.TheOrder, model.folderId);

winform TreeView树节点上下移动的更多相关文章

  1. TreeView 树节点的处理

    TreeView 树节点的处理 using System; using System.Collections.Generic; using System.ComponentModel; using S ...

  2. winform treeview 通过节点名称添加子节点

    /// <summary> /// 添加人员节点(利用TreeNodeCollection) /// </summary> /// <param name="t ...

  3. 初始化bootstrap treeview树节点

    最近在做启明星图库时,使用了Jquery Bootstrap  Treeview插件.但是,遇到了一个初始化的问题.先看效果如下: 当用户打开图库时,左边分类第一个类别是“所有分类”,默认需要选中. ...

  4. c# winform TreeView NODE(节点) 重命名或获取节点修改后的值

    在程序开发过程中我们经常用到treeview,还经常要修改节点的名字.节点名字修改后还想及时更新数据库.这时问题就来了,怎样获取NODE(节点)更新后的值呢?本人试了很多方法最终分析出treeview ...

  5. Access Treeview树节点代码二

    Private Sub Form_Load() '引用C:\windows\system32\MSCOMCTL.OCX,否则提示出错. Dim Rec As New ADODB.Recordset D ...

  6. Access Treeview树节点代码一

    Private Sub TreeView0_Updated(Code As Integer)Dim ndeindex As NodeSet ndeindex = TreeView0.Nodes.Add ...

  7. winform中生成TreeView树

    无论是webform还是winform,TreeView都是常用功能.使用递归方法很方便. 下面分享一个小实例. 数据库中3个字段,分别是:ID,itemType_name,itemType_PID ...

  8. C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用心得

    在网上查了很多,发现没有讲述关于--C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用--的资料 自己研究了一个使用方法.下面来看看. 我有两个窗体:LOGINFRM,M ...

  9. C#上移,下移TreeView中的树节点顺序

    C#上移,下移TreeView中的树节点顺序 2009-08-12 20:10 1494人阅读 评论(2) 收藏 举报 c#buttonobjectnullstring C#中,通过单击上移,下移按钮 ...

随机推荐

  1. HDU1025---(LIS 最长上升子序列 的应用)

    分析: n行 每行包含两个整数p r;意思是p从到r 不能有交叉的路 p刚好从1->n, 可看做下标,到的地方看做值 就转化为了最长上升子序列的问题 此题难点,怎么将其转化为LIS问题 #inc ...

  2. 【洛谷 SP283】NAPTIME - Naptime(DP)

    题目链接 先考虑如果只有一天,那么该怎么做. 设\(f[i][j][1]\)表示前\(i\)个小时睡了\(j\)个小时并且第\(j\)个小时正在睡觉时的最大体力,\(f[i][j][1]\)表示前\( ...

  3. bootstrap——集合

    1.<nav class="navbar navbar-inverse"> inverse,反色,原导航条为白色,加-inverse后改为黑色   2.data-tog ...

  4. python基础===pip安装模块失败

    此情况只用于网络不畅的安装模块背景: 总出现红色的 Could not find a version that satisfies the requirement pymongo(from versi ...

  5. PL/SQL 07 触发器 trigger

    --触发器 触发器有三类: 数据操作触发器    用before触发器进行数据校验    用after触发器进行级联操作    语句触发器限制数据的操作和记录操作日志    instead of 触发 ...

  6. DRF的异常处理

    默认情况下,DRF框架通过内置的 exception_handler 方法,处理了如下异常: django内置异常 Http404 PermissionDenied DRF框架异常 APIExcept ...

  7. k8s的应用打包工具Helm

    每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Helm 则是 Kubernetes 上的包管理器. 本章我们将讨论 ...

  8. HDU 2561 第二小整数(排序,水)

    第二小整数 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. 百度之星资格赛 2016 Problem 1002

    本文链接:http://www.cnblogs.com/Ash-ly/p/5494623.html 题意: 度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个 ...

  10. 洛谷——P3913 车的攻击

    P3913 车的攻击 题目描述 N \times NN×N 的国际象棋棋盘上有KK 个车,第ii个车位于第R_iRi​行,第C_iCi​ 列.求至少被一个车攻击的格子数量. 车可以攻击所有同一行或者同 ...