Как Отключить Высокий звук + форма закрытия F4?

Термины используются взаимозаменяемо. Если вы хотите быть действительно педантичным, то вы можете определить «вложенный класс» для обозначения статического внутреннего класса, который не имеет закрывающего экземпляра. В коде у вас может быть что-то вроде этого:

public class Outer {
    public class Inner {}

    public static class Nested {}
}

Это не совсем общепринятое определение.

76
задан GEOCHET 11 February 2014 в 19:59
поделиться

7 ответов

Это делает задание:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
}

Редактирование: В ответ на беспокойство pix0rs - да Вы корректны, что Вы не будете в состоянии программно закрыть приложение. Однако можно просто удалить обработчик событий для form_closing события прежде, чем закрыть форму:

this.FormClosing -= new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
this.Close();
103
ответ дан Martin 24 November 2019 в 11:06
поделиться

Если Вы посмотрите значение из FormClosingEventArgs e.CloseReason, оно скажет Вам, почему форма закрывается. Можно тогда решить, что сделать, возможные значения:

Имя элемента - Описание

<час>

Ни один - причина закрытия не была определена или не могла быть определена.

WindowsShutDown - операционная система закрывает все приложения перед закрытием.

MdiFormClosing - родительская форма этой формы многодокументного интерфейса (MDI) закрывается.

UserClosing - пользователь закрывает форму через пользовательский интерфейс (UI), например, путем нажатия кнопки Close на окне формы, выбора Близко от системного меню окна или нажатия ALT + F4 .

TaskManagerClosing - Диспетчер задач Microsoft Windows закрывает приложение.

FormOwnerClosing - форма владельца закрывается.

ApplicationExitCall - метод Выхода Класса приложений был вызван.

57
ответ дан Patrick 24 November 2019 в 11:06
поделиться

Я полагаю, что это - правильный способ сделать это:

protected override void OnFormClosing(FormClosingEventArgs e)
{
  switch (e.CloseReason)
  {
    case CloseReason.UserClosing:
      e.Cancel = true;
      break;
  }

  base.OnFormClosing(e);
}
25
ответ дан antsyawn 24 November 2019 в 11:06
поделиться

Обратите внимание, что это считают невоспитанностью для приложения, чтобы полностью препятствовать тому, чтобы себя закрылся. Необходимо проверить аргументы события в пользу события Closing для определения, как и почему приложение попросили закрыться. Если это из-за завершения работы Windows, Вы не должны предотвращать завершение.

16
ответ дан angry person 24 November 2019 в 11:06
поделиться

Вы могли обработать FormClosing событие и установить FormClosingEventArgs.Cancel на true.

13
ответ дан Timbo 24 November 2019 в 11:06
поделиться

я использую форму в качестве всплывающего диалогового окна для отображения индикатора выполнения, и я не хочу, чтобы пользователь был в состоянии закрыть его.

, Если пользователь полон решимости закрыть Ваше приложение (и хорошо осведомленный) достаточно для нажатия alt+f4, они, скорее всего, также будут достаточно хорошо осведомлены, чтобы выполнить диспетчер задач и уничтожить приложение вместо этого.

, По крайней мере, с alt+f4 Ваше приложение может сделать корректное завершение работы, вместо того, чтобы просто заставить людей уничтожить его. На основе опыта люди, уничтожающие Ваше приложение, имеют в виду поврежденные файлы конфигурации, поврежденные базы данных, наполовину законченные задачи, которые Вы не можете возобновить, и много других болезненных вещей.

, По крайней мере, запрашивают их с, 'Вы уверенный' вместо того, чтобы утончиться, предотвращая его.

12
ответ дан Orion Edwards 24 November 2019 в 11:06
поделиться

FormClosing назвали бы, даже когда Вы программно закрываете окно? Если так, Вы, вероятно, хотели бы добавить некоторый код, чтобы позволить форме быть закрытой, когда Вы закончены с ним (вместо того, чтобы всегда отменить операцию)

2
ответ дан pix0r 24 November 2019 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: