Из коробки нет простого способа обнаружить такое поведение. Хотя существует свойство «FormClosingEventArgs.CloseReason», которое вы можете проверить в событии FormClosing, на самом деле оно не будет конкретно указывать причину закрытия.
Начиная с MSDN , описание значения перечисления UserClosing:
Пользователь закрывает форму через пользовательский интерфейс (UI), для
Например, нажав кнопку Закрыть в окне формы, выбрав
Закройте из меню управления окна или нажмите ALT + F4.
Итак, как вы можете видеть, есть много перечисленных причин, но не одна конкретно.
Я думаю, что лучшее, что вы собираетесь сделать, - это удалить границу окна (включая кнопки) и поместить на нее собственную кнопку закрытия, а также перехватить событие щелчка, чтобы получить желаемое поведение. Я видел, как это было сделано раньше, и оно работает, хотя может выглядеть не так хорошо, как обычные кнопки окна.