WPF:如何在拖动 ListView 项目时允许在 ListView 中使用鼠标滚轮滚动?
Posted
技术标签:
【中文标题】WPF:如何在拖动 ListView 项目时允许在 ListView 中使用鼠标滚轮滚动?【英文标题】:WPF: How do I allow scrolling with the mouse wheel in a ListView while dragging ListView items? 【发布时间】:2010-10-29 21:56:50 【问题描述】:我在我的 WPF 应用程序中实现了 ListView
的拖放操作。项目可以拖放到ListView
中,也可以拖放到ListView
旁边的TreeView
中。
目前,我已将其设置为当您拖动到ListView
的底部时,它会自动向下滚动列表。
我想知道的是,当我拖动它的项目时,是否有任何方法可以用鼠标滚轮滚动 ListView
?我拖动时似乎没有触发鼠标滚轮事件。
【问题讨论】:
您想同时使用鼠标滚轮和鼠标左键吗?哎呀,我没那么协调。 只是想知道:谁会使用它?已经有足够多的人遇到拖放问题了,同时滚动听起来并不容易执行。 我会使用它,显然我们绝对需要它发生。您说的是哪种类型的拖放问题? 首先,我建议您在尝试执行此操作时使用 Spy++ 来观察流经 WMQ 的鼠标事件。在拖动过程中,确认滚动会生成消息。看到这些消息会让你更好地为使用互操作处理它们做好准备。 通常在任何应用程序中,您可以通过在列表边界拖动的同时移动条目来滚动。例如当项目位于列表的最底部时,向下滚动。我想这是大多数用户习惯的。 【参考方案1】:-
在
DragDrop.DoDragDrop(...)
之前创建(并启动)鼠标钩子助手
分析鼠标滚轮(+ 检查鼠标是否在控件上)
在DoDragDrop()
操作后停止(处置)鼠标钩子助手
注意:总是停止鼠标钩子助手,因为它可以在关闭窗口时冻结应用程序(我在 XP 上看到它)。
here你可以找到一个MouseHook,采用它(我发现了错误:))或类似的东西。
【讨论】:
以上是关于WPF:如何在拖动 ListView 项目时允许在 ListView 中使用鼠标滚轮滚动?的主要内容,如果未能解决你的问题,请参考以下文章