【发布时间】:2013-09-17 09:43:32
【问题描述】:
我正在用 winForm 编写一个应用程序。我在 from1 中有一个面板,它有很多事件处理程序。 当我处理 panel1 并创建新面板时,以前的事件存在并且它们会触发。为了删除 panel1 事件,我尝试了下面的代码。
panel1.Click -= clickHandle_1 ;
但它并不适用于程序代码中的所有地方。例如在另一种方法中。 创建新 panel1 时如何删除 panel1 之前的所有事件?
【问题讨论】:
-
这是代码异味。您可以编写 one 事件处理程序来完成所有三个工作。或者只是从 Panel 派生一个覆盖 OnResize 和 OnClick 方法的类。也不清楚为什么要删除它们,可以在事件处理程序中检查一个 bool 变量以跳过它正在执行的任何操作。尝试发布有意义的代码而不是这个。
-
同意。我会考虑在这里应用策略模式的变体。 oodesign.com/strategy-pattern.html