gpt4 book ai didi

c# - 如何在显示 ContextMenuStrip 时接收鼠标移动事件?

转载 作者:太空宇宙 更新时间:2023-11-03 14:33:49 24 4
gpt4 key购买 nike

我正在使用 ContextMenuStrip 通过调用其 Show(Control, int, int) 在用户将鼠标悬停在表格中的单元格上时向用户显示一些选项表的 MouseMove 事件中的方法,将表作为 Control 参数传递。

如果应用未激活,则一切正常;但如果应用程序处于事件状态,则 MouseMove 事件会在 ContextMenuStrip 显示后停止触发。

如何在显示 ContextMenuStrip 时接收鼠标移动事件?我不想添加 Hook 或应用程序过滤器,我只想要应用程序处于事件状态时的非事件应用程序行为。

最佳答案

这不仅仅是鼠标捕获,它很容易变通。有一个名为“ModalMenuFilter”的内部类,当显示用于过滤各种消息的工具条下拉列表时,该类将被激活。包括 WM_MOUSEMOVE。它通过使用 SetWindowsHookEx() 来实现。它在您的应用未处于事件状态时起作用,因为此 Hook 仅在您的表单处于事件状态时安装。

这些都不能从您的代码中访问,您必须使用反射。在我看来,您可以使用 ModalMenuFilter.RemoveActiveToolStrip() 来禁用过滤器。用 Reflector 看看。然而,这很可能会导致其他问题。

关于c# - 如何在显示 ContextMenuStrip 时接收鼠标移动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1861167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com