【发布时间】:2008-10-23 23:35:32
【问题描述】:
如何在不使代码非常复杂的情况下捕获用户在 winform 应用程序中的点击? AOP 是答案吗?如何跟踪仪器?
【问题讨论】:
标签: c# winforms click aop instrumentation
如何在不使代码非常复杂的情况下捕获用户在 winform 应用程序中的点击? AOP 是答案吗?如何跟踪仪器?
【问题讨论】:
标签: c# winforms click aop instrumentation
这确实取决于您的实际要求。
对于简单/示例/原型 winforms 应用程序,我建议使用基本的WinForms Event Handlers,并在处理程序方法中使用代码(前提是它不太重)。如果代码很重,包含硬业务规则并且不与表单交互,那么最好将该代码移动到另一个类并从事件处理程序中调用它。
Aspect Oriented Programming 更进一步。它通常最好应用于大型项目。您仍然需要表单元素的事件处理程序(我建议坚持使用基于控件的事件处理程序 - 不要尝试创建自己的全局事件处理工具),但它们应该调用 Command 对象(参见 GangOfFour 中的 Command Pattern )。然后可以从应用程序中的任何位置调用这些命令对象。如果您需要检测,检测应该在那些 Command 对象而不是 WinForms 事件上。您可以利用Inversion of Control 容器(如Castle Windsor)将日志/审计注入命令,而无需使用Interceptor pattern 更改您的应用程序。 Here's an example from David Hayden
【讨论】:
在winforms中捕获点击的一般方法是处理Control.MouseClick。如果您想了解更多详细信息,还可以查看Control.MouseDown 和Control.MouseUp。
如果您提供有关您尝试做的事情的更多详细信息,我们可能会提出更有针对性的答案。
【讨论】: