求WIN7快速启动栏的拖动实现思路
求WIN7快速启动栏的拖动实现思路,比如有7个同样大小的PictureBox控件并排顺序放置于窗体上.分别为P1,P2...P7
,当用户拖动其中一个到另一个上面(比如把P2拖动到P6上面)时,他们的顺序便成为P1,P3,P4,P5,P6,P2,P7或P1,P3,P4,P5,P2,P6,P7,也就是说要控制P2是移动到P6的前面还是后面。
求思路,有代码更好。谢谢高手.
[最优解释]
先简化一下规则:P2拖动到P6上面,就认为是P2拖到P6后面,依据是P2放下去左边线在P6左右边线的中间。
将控件放入数组(下标0),用控件在数组中的次序表示摆放次序,初始为 A={P1,P2,P3,P4,P5,P6,P7}
当P2拖动到P6上面时
求P2的拖出次序 j = (P2.Left \ 100) ——这里用拖动前的坐标
求P2的放下次序 k ——这里用放下后的坐标(需要计算)
If P2.Left < 0 Then
k = 0
Else
k = (P2.Left \ 100) + 1
End If
如果是从前往后拖 j<k 那么 k = k-1
A 中移除 j 位置的 P2,得 A={P1,P3,P4,P5,P6,P7}
A 中在 k 位置插入 P2,得 A={P1,P3,P4,P5,P6,P2,P7}
按照 A 中的次序调整控件 A(i).Left = i * 100
[其他解释]
手边没有 Win7,不知道拖动有什么特别的处理。
想来应该是很简单的坐标判断规则——
假定每个格子(图片加间距)的宽度为100,那么判断图片拖动结束时的 X:
<50 拖到P1前面
[50,149] 拖到P2前面
[150,249] 拖到P3前面
依此类推
[其他解释]
能说的详细些吗?除了判断X,主要的是移动块的算法,真不知道如何实现,望给些详细提示,谢谢.
[其他解释]
在dragdrop事件中进行处理
[其他解释]
昨天用了一个下午时间终于搞定了。效果还不错。最怕坐标这方面的计算了,整地人发晕(只能说太笨,嘿)。
不过还是感谢Tiger_Zhao,我会按你的思路再来一遍试试,多学一种方法是好事,哈哈,谢了!,感谢提供思路。