允许用户使用鼠标拖动在 Treeview 中上下移动节点。 C#
Allow User to Move nodes in Treeview up and down using mouse drag. c#
我想知道树视图中是否有任何 属性 允许用户在 运行 时间内使用鼠标拖动上下移动节点(就像交换两个节点而不需要添加额外的按钮)
这是linkdrag nodes in treeview
的代码
它可用于将节点从树拖到另一棵树,但任何人都可以将其自定义为
在同一棵树上
在 Visual C# 中创建一个新的 Windows 应用程序。默认情况下,创建一个名为 Form1 的窗体。
使用工具箱将两个 TreeView 控件添加到 Form1。默认情况下,会创建 TreeView1 和 TreeView2。
要允许拖放 TreeView 控件,请在属性 window 中将 TreeView1 和 TreeView2 的 AllowDrop 属性 更改为 True。
双击 Form1 以生成 Form1 的 Load 事件的方法处理程序。添加以下代码以使用 TreeNode 对象填充两个 TreeView 控件并定义事件处理程序:
添加以下方法处理程序来处理 TreeView1 或 TreeView2 的 ItemDrag 事件,具体取决于拖动操作的方向。此代码启动对正在拖动的项目的移动操作。
私人无效treeView_ItemDrag(对象发件人,
添加以下方法处理程序来处理TreeView1 或TreeView2 的DragEnter 事件,具体取决于拖动操作的方向:
private void treeView_DragEnter(对象发送者,
将以下方法添加到 Form1 class,使其紧跟您在上一步中添加的方法
private void form1_Load(object sender, EventArgs e)
{
this.treeView.ItemDrag += new ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView.DragDrop += new DragEventHandler(this.treeView_DragDrop);
this.treeView.DragEnter += new DragEventHandler(this.treeView_DragEnter);
}
private void treeView_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
_selectedNode = (TreeNode)e.Item;
}
private void treeView_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView_DragDrop(object sender, DragEventArgs e)
{
TreeNode sourceNode = _selectedNode;
if (sourceNode != null)
{
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode destinationNode = ((TreeView)sender).GetNodeAt(pt);
if (destinationNode != null)
{
//ur target
}
}
}
}
我想知道树视图中是否有任何 属性 允许用户在 运行 时间内使用鼠标拖动上下移动节点(就像交换两个节点而不需要添加额外的按钮)
这是linkdrag nodes in treeview
的代码
它可用于将节点从树拖到另一棵树,但任何人都可以将其自定义为
在同一棵树上
在 Visual C# 中创建一个新的 Windows 应用程序。默认情况下,创建一个名为 Form1 的窗体。 使用工具箱将两个 TreeView 控件添加到 Form1。默认情况下,会创建 TreeView1 和 TreeView2。 要允许拖放 TreeView 控件,请在属性 window 中将 TreeView1 和 TreeView2 的 AllowDrop 属性 更改为 True。 双击 Form1 以生成 Form1 的 Load 事件的方法处理程序。添加以下代码以使用 TreeNode 对象填充两个 TreeView 控件并定义事件处理程序:
添加以下方法处理程序来处理 TreeView1 或 TreeView2 的 ItemDrag 事件,具体取决于拖动操作的方向。此代码启动对正在拖动的项目的移动操作。 私人无效treeView_ItemDrag(对象发件人,
添加以下方法处理程序来处理TreeView1 或TreeView2 的DragEnter 事件,具体取决于拖动操作的方向: private void treeView_DragEnter(对象发送者,
将以下方法添加到 Form1 class,使其紧跟您在上一步中添加的方法
private void form1_Load(object sender, EventArgs e)
{
this.treeView.ItemDrag += new ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView.DragDrop += new DragEventHandler(this.treeView_DragDrop);
this.treeView.DragEnter += new DragEventHandler(this.treeView_DragEnter);
}
private void treeView_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
_selectedNode = (TreeNode)e.Item;
}
private void treeView_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView_DragDrop(object sender, DragEventArgs e)
{
TreeNode sourceNode = _selectedNode;
if (sourceNode != null)
{
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode destinationNode = ((TreeView)sender).GetNodeAt(pt);
if (destinationNode != null)
{
//ur target
}
}
}
}