• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#树形控件节点拖动

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在C#环境下实现树形控件节点的拖动。废话不多说先上图。

拖动选中的节点。然后释放。

拖动部分的代码:

首先把树形控件和面板的属性AllowDrop改为True。
树形控件的ItemDrag事件:
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
DoDragDrop(e.Item, DragDropEffects.Move);
isMouseDown
= true;
}
}
树形控件的DragEnter事件:
private void treeView1_DragEnter(object sender, DragEventArgs e)
{
if (isMouseDown)
{
e.Effect
= DragDropEffects.Move;
}
else
{
e.Effect
= DragDropEffects.None;
}
}
树形控件的DragDrop事件
private void treeView1_DragDrop(object sender, DragEventArgs e)
{
TreeNode moveNode
= (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
//根¨´据Y鼠º¨®标À¨º坐Á?标À¨º确¨¡¤定¡§要°a移°?动¡¥到Ì?的Ì?目?标À¨º节¨²点Ì?
Point pt;
TreeNode targeNode;
pt
= ((TreeView)(sender)).PointToClient(new Point(e.X, e.Y));
targeNode
= this.treeView1.GetNodeAt(pt);
}
Panel2面板(容器)控件的DragEnter事件
private void panel2_DragEnter(object sender, DragEventArgs e)
{
if (isMouseDown)
e.Effect
= DragDropEffects.Move;
else
e.Effect
= DragDropEffects.None;
}
PnlView面板(浏览区域)的DragEnter事件
private void PnlView_DragEnter(object sender, DragEventArgs e)
{
if (isMouseDown)
e.Effect
= DragDropEffects.Move;
else
e.Effect
= DragDropEffects.None;
}
PnlView面板(浏览区域)的DragDrop事件
private void PnlView_DragDrop(object sender, DragEventArgs e)
{
Position.X
= e.X;
Position.Y
= e.Y;
Position
= PnlView.PointToClient(Position);
GetPointWindow(Position, ViewCount);
//获取停留的窗口PS:这个自己定义。
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#索引器:在集合或数组中取出某一个元素举例_【转】发布时间:2022-07-10
下一篇:
一个用C#写的日志类发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap