假设我有一个KeyPress由各个类订阅的事件。 假设类A也在表单上订阅了KeyPress ,而类B也订阅了KeyPress
现在我希望只有其中的一个类能够在运行时处理Form触发的事件。 这就是说,首先处理类A,我已经尝试使用e.Handled = true但是在这种情况下不起作用。
如果A类已经处理了,我不希望B类来处理从表单中发起的事件,我现在有一个解决方法,在A和B中设置一些公共标志,但是这不是一个从软件工程原理的好主意,我希望class级尽可能相互独立,但同时应该知道一个事件已经被处理了,不需要再处理。
那可能吗?
如何为Windows编写一个非常简单的本机应用程序(不需要.NET并通过安装过程)
.NET / Windows Server中的最大传出套接字连接
如何以编程方式更改LAN设置(代理configuration)
如何远程启动不同系统上的应用程序?
是的,这是可能的,需要检查e.Handled == true和.NET处理其余的:-)
记忆中密码的一般实践
我在哪里可以find在.NET中开发的Windows服务的生命周期的详细视图?
我如何快速创build大(> 1GB)的文本+二进制文件与“自然”的内容? (C#)
如何检测是否安装了MysqL?
.NET Framework术语中的“replace版本”是什么意思?
你必须在每个事件处理程序中检查e.Handled,就像我创建的Gist例子 。
基本上每个处理程序需要检查e.Handled == true,如果已经处理,则返回。 Handled属性不会将事件处理短路,只会将参数压入每个订阅事件。
在我的示例中,Form1类始终首先处理该事件,因为它在Form1构造函数中进行了连接。 因此,通过在该事件中设置e.Handled = true,然后在其他事件中检查e.Handled == true,我可以在e.Handled == true时立即返回。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。