繁体   English   中英

用户完成拖放操作后重新排列多个选定的列表视图项

[英]Rearranging multiple selected listview items after user finishes drag & drop

介绍使用:

我正在使用listview的拖放功能。 我停留在最后一步->在用户完成拖放操作后重新排列多个选定的项目。

题:

您能解释一下实现项目重排的算法吗?

用户释放鼠标后,我具有单击项的索引。 我有被拖动物品及其数量的索引。 伪代码也是可以接受的,但请注意,我可能会有后续问题。

注意:

这篇帖子已经过修改,以回应声称我的原始问题未寻求用户友好实现的评论。

关键是要实现标准的拖放行为,而我之所以不好说这个问题,是因为我对该主题缺乏经验。

如果需要进一步说明,我将更新我的帖子。

问候。

常规拖放重新排序将删除所选项目,并将其重新插入新位置。 让新地点中的现有物品跳到旧物品的来源是很不直观的。

要实施“标准”重新排序,基本上,您可以:

  • 记住用户将您的项目拖到下面的项目索引。 在上面的示例中,该值为5 (假设要第6项上方插入新项)
  • 使用LVM_DELETEITEM一次从列表中删除拖动的项目
  • 如果所拖动的项目最初位于新位置的上方 ,请从您在步骤1中记住的索引中减去所拖动项目的总数。这将使用上面的示例为我们提供2
  • 最后,将拖动的项目重新插入到记住的索引处(记住要为每个其他项目增加新索引)。 例如,将第一个拖动的项目插入位置2 ,然后将下一个插入位置3 ,依此类推。

还要注意,对于将项目拖到列表顶部的情况,您需要进行特殊处理。 在这种情况下,您可以从0开始插入,然后从1 ,依此类推。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM