Как указывает сообщение об ошибке, поле Form1
и метод Form1_Closing
привязаны к экземплярам класса MyProgram
, а не к самому классу . Вы можете сделать их статическими, чтобы решить проблему:
static Form Form1 = new Form();
static void Form1_Closing(object sender, CancelEventArgs e) { ... }
Либо создайте экземпляр в основном методе:
// really bad code; only a demonstration
var myProgram = new MyProgram();
myProgram.Form1.FormClosing += myProgram.Form1_Closing;
myProgram.Form1.Show();
Конечно, нет необходимости в любых этого, поскольку вы, похоже, не используете поле где-либо еще - вы можете просто сделать его локальной переменной.
var form = new Form();
form.FormClosing += Form1_Closing; // make Form1_Closing a static method
form.Show();
Вы можете также написать тривиальный метод-обработчик событий как лямбду:
form.FormClosing += (sender, e) => e.Cancel = true;