Ну, я начал использовать Emacs в колледже, и мне только 30 лет, таким образом, я думаю, что рассчитываю как часть "Любящего Eclipse поколения".
я не использую его каждый день, но Emacs, конечно, около верхней части моего списка инструментов. (И намного выше, чем Eclipse, я могу сказать Вам это.)
Для этого вы можете переопределить OnFormClosing . Только будьте осторожны, вы не сделаете ничего слишком неожиданного, так как щелчок «X» для закрытия - это хорошо понятное поведение.
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
if (e.CloseReason == CloseReason.WindowsShutDown) return;
// Confirm user wants to close
switch (MessageBox.Show(this, "Are you sure you want to close?", "Closing", MessageBoxButtons.YesNo))
{
case DialogResult.No:
e.Cancel = true;
break;
default:
break;
}
}
Переопределить метод OnFormClosing .
ВНИМАНИЕ: Вам необходимо проверить CloseReason и изменить поведение только в том случае, если это UserClosing. Вы не должны помещать сюда ничего, что могло бы остановить процедуру завершения работы Windows.
Отмените OnFormClosing или зарегистрируйтесь для события FormClosing .
Это пример переопределения функции OnFormClosing в производной форме:
protected override void OnFormClosing(FormClosingEventArgs e)
{
e.Cancel = true;
}
Это пример обработчика события, останавливающего закрытие формы, которое может быть в любом классе:
private void FormClosing(object sender,FormClosingEventArgs e)
{
e.Cancel = true;
}
Для более продвинутых проверьте свойство CloseReason в FormClosingEventArgs, чтобы убедиться, что выполняется соответствующее действие. Возможно, вы захотите выполнить альтернативное действие только в том случае, если пользователь пытается закрыть форму.
Это довольно часто задаваемый вопрос. Вот один хороший ответ:
Если вам неудобно помещать свой код в событие Form_Closing, это единственный другой вариант, о котором я знаю это "хитрость", которую я использовал один или два раза. Нет необходимости прибегать к этому хакеру, но вот он:
Не используйте обычную кнопку закрытия. Вместо этого создайте форму так, чтобы в ней не было ControlBox. Вы можете сделать это, установив ControlBox = false в форме, и в этом случае у вас все еще будет обычная полоса в верхней части формы, или вы можете установить FormBorderStyle формы на «Нет». Если вы пойдете по второму маршруту, не будет ни полосы сверху, ни какой-либо другой видимой границы, поэтому вы Вы должны будете смоделировать их, нарисовав форму или художественно используя элементы управления Panel.
Затем вы можете добавить стандартную кнопку и сделать ее похожей на кнопку закрытия, и поставить чистую- код там. В конце события кнопки просто вызовите this.Close ()
(C #) или Me.Close ()
(VB)