关于树控件节点的排序 我这边树控件从数据库中读取节点信息,然后添加进树控件,想请问下这边用什么事件可以拖动节点排序,然后用什么方法把新的排序写进数据库,以便下次启动重新初始化时使用重新排列的数据。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 设这Treeview的AllowDrop属性为true;拖动时,记录拖动节点及其放下时节点的父节点就可以了 #region 节点拖拽操作 private Point Position = new Point(0, 0); private void treeView1_ItemDrag(object sender, ItemDragEventArgs e) { DoDragDrop(e.Item, DragDropEffects.Move); } private void treeView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(TreeNode))) e.Effect = DragDropEffects.Move; else e.Effect = DragDropEffects.None; } private void treeView1_DragDrop(object sender, DragEventArgs e) { try { TreeNode myNode = 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); TreeNode DropNode = this.tvType.GetNodeAt(Position); if (FunctionsUI.CreateQuestionDialog("是否要将" + myNode.Text + "移动" + DropNode.Text + "类别下?") == DialogResult.OK) { //// 1.目标节点不是空。2.目标节点不是被拖拽接点的字节点。3.目标节点不是被拖拽节点本身 if (DropNode != null && DropNode.Parent != myNode && DropNode != myNode) { TreeNode DragNode = myNode; // 将被拖拽节点从原来位置删除。 myNode.Remove(); // 在目标节点下增加被拖拽节点 DropNode.Nodes.Add(DragNode); DragNode.Parent.Expand(); } //// 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下 if (DropNode == null) { TreeNode DragNode = myNode; myNode.Remove(); tvType.Nodes.Add(DragNode); } } } catch (Exception ex) { FunctionsUI.CreateErrorDialog(ex.Message); } } #endregion 省市连接代码问题 C#怎样实现关闭显示器后移动鼠标或按键不开启显示器 ★★★请教DOTNETZIP的使用协议问题★★★ 动态加载treeview 大家好啊,能帮帮我吗,我是一个C#初学者 VC#移动开发RDA PULL问题(超难度,也许对高手来说很简单)!!! 如何从XML文件中读出来,然后update到SQL表中??(表有主键) 【高手来】 如何将缓冲区的指针传给Com? 请教:做一个单机程序最好采用什么数据库? 怎样将字符串类型的时间“7/1/2011 12:00:00 AM”转换为字符串类型的“20110701” c# winform rdlc报表插入图表的问题(vs2010)
拖动时,记录拖动节点及其放下时节点的父节点就可以了 #region 节点拖拽操作
private Point Position = new Point(0, 0); private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
} private void treeView1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(TreeNode)))
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
} private void treeView1_DragDrop(object sender, DragEventArgs e)
{
try
{
TreeNode myNode = 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);
TreeNode DropNode = this.tvType.GetNodeAt(Position);
if (FunctionsUI.CreateQuestionDialog("是否要将" + myNode.Text + "移动" + DropNode.Text + "类别下?") == DialogResult.OK)
{
//// 1.目标节点不是空。2.目标节点不是被拖拽接点的字节点。3.目标节点不是被拖拽节点本身
if (DropNode != null && DropNode.Parent != myNode && DropNode != myNode)
{
TreeNode DragNode = myNode;
// 将被拖拽节点从原来位置删除。
myNode.Remove();
// 在目标节点下增加被拖拽节点
DropNode.Nodes.Add(DragNode);
DragNode.Parent.Expand();
}
//// 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下
if (DropNode == null)
{
TreeNode DragNode = myNode;
myNode.Remove();
tvType.Nodes.Add(DragNode);
}
}
}
catch (Exception ex)
{
FunctionsUI.CreateErrorDialog(ex.Message);
}
}
#endregion