代码之家  ›  专栏  ›  技术社区  ›  Alexander Rafferty

重新排列ListView项

  •  1
  • Alexander Rafferty  · 技术社区  · 14 年前

    假设我有一个ListView控件,其中包含多个项。我如何允许用户拖放项以在控件中重新排列它们。

    ListView控件位于报表视图中,具有完整的行选择扩展样式。

    事先谢谢。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Remy Lebeau    14 年前

    在您的ListView中 WM_LBUTTONDOWN 处理程序,将当前选定的项索引存储在某个位置。

    在您的ListView中 WM_LBUTTONUP 处理程序,使用 ListView_HitTest() 确定光标下的项目。如果与存储的索引不同,则使用 ListView_DeleteItem() ListView_InsertItem() 将“拖动”的项“移动”到新索引。

    (可选)帮助用户在ListView的 WM_MOUSEMOVE 处理程序,使用 列表视图\uHitTest() 要确定光标下的项目,请使用 ListView_SetItemState() 禁用/启用 LVIS_DROPHILITED 为以前“突出显示”的项目(如果有)和“突出显示”当前项目的状态。