所以我有一个方法,我希望每次某个对象被调用,在这种情况下Form
有一个特定的事件被触发,在这种情况下是FormClosing
。现在我可以做的是创建一个继承MyForm
的{{1}}然后执行我需要的东西
Form
但是,如果我不想做上述事情,该怎么办?是否有一些框架或模式基本上让我将想要的行为注入代码?
如果这个不够清楚,我可以解释更多。
答案 0 :(得分:1)
将一个可以设置为true或false的属性添加到MyForm类是否足以告诉它不要调用该方法?我个人会覆盖Closing方法而不是订阅事件。
protected override void OnFormClosing(FormClosingEventArgs e)
{
if(CallMyMethod)
{
MyMethod(this);
}
base.OnFormClosing(e);
}
如果MyMethod在表单外部,您可以使用委托(也许更好的命名)
public Action<Form> MyMethod { get; set; }
protected override void OnFormClosing(FormClosingEventArgs e)
{
if(MyMethod != null)
{
MyMethod(this);
}
base.OnFormClosing(e);
}
但实际上因为它是一个表单,如果你想调用外部方法,最好订阅Forms Closing事件。
** OP编辑**
这足以让我到达我想去的地方,它创建了一个继承自Form
的部分类,并覆盖那里的事件来做我想做的事。