用户完成拖放后重新排列多个选定的列表视图项目
Rearranging multiple selected listview items after user finishes drag & drop
简介:
我正在研究列表视图的拖放功能。我停留在最后一步 -> 在用户完成拖放后重新排列 多个 个选定项目。
问题:
你能解释一下实现项目重排的算法吗?
我有用户释放鼠标后点击项目的索引。我有拖动项目的索引及其计数。伪代码也是可以接受的,但请注意我可能有后续问题。
注意:
此 post 已针对声称我的原始问题未寻求用户友好实施的评论进行了编辑。
关键是要实现标准的拖放行为,而我一开始问题措辞不佳的原因是我缺乏这方面的经验。
如果需要进一步说明,我会更新我的 post。
此致。
正常的拖放重新排序会删除所选项目并将它们重新插入到新位置。新地点的现有项目跳转到旧项目的来源是非常不直观的。
要实现 "standard" 重新排序,基本上你:
- 记住用户将您的项目拖到的下方项目的索引。在上面的示例中,这将是
5
(假设要在 上方 项目 6 上插入新项目)
- 使用
LVM_DELETEITEM
从列表中一次一个地删除拖动的项目
- 如果拖动的项目最初高于新位置,从您在步骤 1 中记住的索引中减去拖动项目的总数。这将得到
2
使用上面的示例。
- 最后,将拖动的项目重新插入到记住的索引处(记住为每个附加项目增加新索引)。例如,第一个拖动的项目将插入位置
2
,然后是下一个 3
,依此类推。
另请注意,您需要对项目被拖动到列表顶部的情况进行特殊处理。在这种情况下,您将从 0
开始插入,然后是 1
等等。
简介:
我正在研究列表视图的拖放功能。我停留在最后一步 -> 在用户完成拖放后重新排列 多个 个选定项目。
问题:
你能解释一下实现项目重排的算法吗?
我有用户释放鼠标后点击项目的索引。我有拖动项目的索引及其计数。伪代码也是可以接受的,但请注意我可能有后续问题。
注意:
此 post 已针对声称我的原始问题未寻求用户友好实施的评论进行了编辑。
关键是要实现标准的拖放行为,而我一开始问题措辞不佳的原因是我缺乏这方面的经验。
如果需要进一步说明,我会更新我的 post。
此致。
正常的拖放重新排序会删除所选项目并将它们重新插入到新位置。新地点的现有项目跳转到旧项目的来源是非常不直观的。
要实现 "standard" 重新排序,基本上你:
- 记住用户将您的项目拖到的下方项目的索引。在上面的示例中,这将是
5
(假设要在 上方 项目 6 上插入新项目) - 使用
LVM_DELETEITEM
从列表中一次一个地删除拖动的项目
- 如果拖动的项目最初高于新位置,从您在步骤 1 中记住的索引中减去拖动项目的总数。这将得到
2
使用上面的示例。 - 最后,将拖动的项目重新插入到记住的索引处(记住为每个附加项目增加新索引)。例如,第一个拖动的项目将插入位置
2
,然后是下一个3
,依此类推。
另请注意,您需要对项目被拖动到列表顶部的情况进行特殊处理。在这种情况下,您将从 0
开始插入,然后是 1
等等。