Создание статичных событий - отличный способ стрелять ногой. Статическое событие имеет неограниченное время жизни. Что делает любые обработчики событий, которые вы регистрируете для этого события, тоже живыми всегда. Что делает любую форму, содержащую такой обработчик событий, тоже вечной. Утечка.
Регистрация обработчика события для статического события требует кода, скажем, в обработчике события FormClosing, который явно отменяет регистрацию обработчика. Вы можете увидеть это явно задокументировано в статье MSDN Library для класса SystemEvents, одного из немногих примеров класса в .NET Framework, который имеет статические события.
Лучший подход - отслеживать экземпляр формы, чье событие Click кнопки должно быть активировано. Как то так:
public partial class Form1 : Form {
public static Form1 MainForm { get; private set; }
public Form1() {
InitializeComponent();
MainForm = this;
}
public void RunClickMethod() {
button1.PerformClick();
}
protected override void OnFormClosing(FormClosingEventArgs e) {
MainForm = null;
base.OnFormClosing(e);
}
}
Что позволяет клиентскому коду сделать это:
Form1.MainForm.RunClickMethod();