zoukankan      html  css  js  c++  java
  • WPF之快速实现拖拽功能

    场景:工具栏上有很多图标(一个图标代表一种控件),可以左键按下图标,然后拖拽到设计区域创建一个个的控件。

    实现:1.给工具栏上的图标添加MouseLeftDown和MouseMove事件,前者事件是为了告诉Move事件我的确按下了左键,同时也可以在MouseDown事件中初始化一些标识;在后者       中经过自己的逻辑判断,看看是否可以拖拽了(一般就是判断自己的标识,比如是否按下了左键,这样的判断),如果可以则加入如下代码:

        DragDrop.DoDragDrop(sourceControl, data, DragDropEffects.Copy);

       第一个参数就是进行拖拽的控件,第二个参数就是通过拖拽传递的数据(object类型,想怎么传就怎么传),第三个就是一个拖拽特效,具体的值查看MSDN。

      2.给目标区域添加Drop事件和DropEnter事件,第一个事件中就是处理拖拽后要干嘛,也就是松开鼠标左键的一瞬间做的事件;第二个事件呢,就是拖拽状态进入目标区域并    且没有释放之前执行的操作,也就是说可以在Enter事件中进行一些操作或处理,使当前的操作达到可以拖拽的条件。

      DragEventArgs.Data.GetData(typeof(T));

    也就是在Drop或者DropEnter中可以通过拖拽事件参数得到拖拽时候传递的数据,也就是步骤1中的第二个参数,通过GetData可以得到执行类型的数据(可能是没有的哦,因为你要和你传递时候的类型匹配才行的哦),然后你就可以做你想做的事情了。

    好了,这个也就这么多东西,具体的应用大家多思考、多看看MSDN吧。

  • 相关阅读:
    错因集锦
    组合数学12
    硬币购物
    考试套路整理
    考前模板整理
    我的友链
    P4127 [AHOI2009]同类分布
    P1836 数页码_NOI导刊2011提高(04)
    P4124 [CQOI2016]手机号码
    数位DP小结
  • 原文地址:https://www.cnblogs.com/ListenFly/p/3586274.html
Copyright © 2011-2022 走看看