实现方法在datagridview的mousedown事件中开始 托放
然后在treeview 的 DragEnter 中接收托放
最后在treeview的 DragDrop 中处理托放结果
注treeview的allowdrop属性要设置为 true
前面已经实现了从 DataGridView 拖放数据到 TreeView不过拖放是通过 鼠标右键完成的 根据windows的一般标准是通过鼠标左键来进行数据拖放操作的
像windows资源管理器既能处理鼠标左键单机的选择也能处理左键拖放操作
这个怎么实现?
前面我们只处理了 DataGridView 的mousedown事件 现在要处理 mousedown mousemove mouseup这三个事件来完成这个任务
大致过程如下
在MouseDown事件里面和之前一样处理只是不启动拖放操作
而是保存要拖放的数据 以及建立一个小的矩形框(根据系统DragSize信息)
然后在 MouseMove 事件里面判断是否已经准备好拖放了如果准备好了就启动拖放操作
(注鼠标在小矩形框范围内的移动不启动拖放操作)
MouseUp里面清除哪些标记量
这样就能处理左键单击的选择和 左键拖放了
代码如下
最后使用中又发现一个问题
就是不能用鼠标左键圈选单元格了
这个该怎么处理呢? 这两个操作是有沖突的
这里我们可以通过时间来控制 即我们要求按下鼠标左键 秒之后 拖动鼠标 就启动数据拖放
否则就按默认的圈选单元格
即增加一个变量在 MouseDown里面记录时间在 MouseMove里面判断时间差
如果不够 秒就不启动数据拖放