Достаточно ли будет добавить свойство, которое вы можете установить в true или false, в класс MyForm, чтобы он не вызывал метод? Лично я переопределил бы метод Закрытия, а не подписывался на событие.
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);
}
но на самом деле, поскольку это форма, если вы хотите вызвать внешний метод, было бы лучше подписаться на событие закрытия форм.
** OP Edit **
Это было достаточно близко, чтобы привести меня туда, куда я хотел пойти, создавая частичный класс, унаследованный от Form
, и переопределяя события там, чтобы делать то, что я хотел.