【问题标题】:WPF: How do I allow scrolling with the mouse wheel in a ListView while dragging ListView items?WPF:如何在拖动 ListView 项目时允许在 ListView 中使用鼠标滚轮滚动?
【发布时间】:2010-10-29 21:56:50
【问题描述】:

我在我的 WPF 应用程序中实现了 ListView 的拖放操作。项目可以拖放到ListView 中,也可以拖放到ListView 旁边的TreeView 中。

目前,我已将其设置为当您拖动到ListView 的底部时,它会自动向下滚动列表。

我想知道的是,当我拖动它的项目时,是否有任何方法可以用鼠标滚轮滚动 ListView?我拖动时似乎没有触发鼠标滚轮事件。

【问题讨论】:

  • 您想同时使用鼠标滚轮和鼠标左键吗?哎呀,我没那么协调。
  • 只是想知道:谁会使用它?已经有足够多的人遇到拖放问题了,同时滚动听起来并不容易执行。
  • 我会使用它,显然我们绝对需要它发生。您说的是哪种类型的拖放问题?
  • 首先,我建议您在尝试执行此操作时使用 Spy++ 来观察流经 WMQ 的鼠标事件。在拖动过程中,确认滚动会生成消息。看到这些消息会让你更好地为使用互操作处理它们做好准备。
  • 通常在任何应用程序中,您可以通过在列表边界拖动的同时移动条目来滚动。例如当项目位于列表的最底部时,向下滚动。我想这是大多数用户习惯的。

标签: wpf listview drag-and-drop mousewheel


【解决方案1】:
  1. DragDrop.DoDragDrop(...) 之前创建(并启动)鼠标钩子助手
  2. 分析鼠标滚轮(+ 检查鼠标是否在控件上)
  3. DoDragDrop() 操作后停止(处置)鼠标钩子助手

注意:总是停止鼠标钩子助手,因为它可以在关闭窗口时冻结应用程序(我在 XP 上看到它)。

here你可以找到一个MouseHook,采用它(我发现了错误:))或类似的东西。

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多