如何侦听某些事件并在应用程序中的许多元素中了解发送方?

How to listen certain events and know the sender among a lot of elements in an application?

提问人:Inconnu 提问时间:4/13/2022 更新时间:4/13/2022 访问量:107

问:

我正在处理一个使用 WinForms 的 vb 项目。我的项目包含许多表单,这些表单包含许多元素(按钮、文本框、复选框等)。我希望当用户执行操作时,能够保存他所做的操作。这就是为什么我需要检测用户事件(鼠标点击、文本输入等)。一旦检测到事件,我将注册其发送者和事件类型。

因此,问题在于我无法侦听用户在所有表单中执行的事件,也无法将此事件链接到发送方。

感谢那些花时间回答我的人。

vb.net WinForms 用户界面 事件 侦听器

评论

0赞 Jimi 4/13/2022
您的意思是要向应用程序添加日志记录功能吗?而且你没有提前计划好吗?
0赞 Inconnu 4/13/2022
@Jimi 事件类型和发件人信息将用于日志记录以外的其他功能,但这就是想法。是的,我没有提前计划。
2赞 Reza Aghaei 4/13/2022
日志记录是应该仔细和有目的地完成的,只要你有事件处理程序/业务逻辑。因此,最好的方法是注入记录器并将调用添加到记录器中。LogDebug/Info/Error 等,在所有事件处理程序和方法中都以正确的代码行。但是,如果您正在寻找一个临时解决方案(或为懒惰的开发人员提供的解决方案),那么您可以订阅基本形式的事件和其他一些有用的事件,例如应用程序异常等,并在那里登录。下面是一个示例
1赞 Jimi 4/13/2022
如果你想记录用户活动(与你订阅的事件没有特别关系),你可以构建一个处理程序类,在 中注册你的过滤器 (),这样你就可以接收到所有键盘/鼠标与UI的交互。您只能收听特定消息(例如,、、 和 translate 消息)。你可以得到将接收消息的控件 -- 我承认,这比较牵强。IMessageFilterApplication.AddMessageFilter()Program.csWM_KEYDOWNWM_LBUTTONDOWNWM_MOUSEENTERWM_MENUSELECTWM_NOTIFYControl.FromHandle([Message].hWnd)
0赞 Jimi 4/13/2022
另一种选择是使用 UI 自动化,这是测试用户与 UI 交互的常用工具。--也比较牵强,因为我不知道你想做什么,在实践中,或者实际目的。

答: 暂无答案