WPF一个完整的TreeView使用实例:(二)拖拽改变父子节点层级

该博客详细介绍了如何在WPF的TreeView中实现拖拽功能,以改变父子节点的层级关系。通过添加全局变量、响应MouseLeftButtonDown事件以及在TreeViewItem样式中设置拖拽事件,实现了拖放操作。文章还提到了系列教程的其他部分,包括自定义样式、数据源绑定、动态添加节点、右键菜单功能以及节点重命名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节主要在上节的基础上实现拖拽改变父子节点层级的功能,效果如下:

1、添加全局变量

private Point lastMouseDownPoint;//上一次鼠标左键点击位置
private TreeViewNode targetNode;//目标节点

2、在TreeView控件中加入MouseLeftButtonDown事件

        /// <summary>
        /// 鼠标左键按下事件响应
        /// </summary>
        private void TreeView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ChangedButton == MouseButton.Left)
            {
                lastMouseDownPoint = e.GetPosition(this.treeView);
            }
        }

3、在TreeViewItem样式中加入拖拽相关事件

            <EventSetter Event="DragEnter" Handler="TreeView_DragEnter"></EventSetter>
            <EventSetter Event="DragLeave" Handler="TreeView_DragLeave"></EventSetter>
            <EventSetter Event="DragOver" Handler="TreeView_DragEnter"></EventSetter>
            <EventSetter Event="Drop" Handler="TreeView_Drop"></EventSetter>
            <EventSetter Event="MouseMove" Handler="TreeView_MouseMove"></EventSetter>

相关事件源码:

        /// <summary>
        /// 拖拽进入,改变字体颜色
        /// </summary>
        private void TreeView_DragEnter(object sender, DragEventArgs e)
        {
            TreeViewItem container = GetNearestContainer(e.OriginalSource as UIElement);
            if (container != null)
            {
                container.Foreground = new SolidColorBrush(Colors.Orange);
            }
        }

        /// <summary>
        /// 拖拽离
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RunnerDNA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值