Свернуть на FormClose предотвращает выключение компьютера - PullRequest
4 голосов
/ 07 сентября 2010

У меня есть простое .NET-приложение на основе форм. В этом я фиксирую событие FormClosing, чтобы предотвратить закрытие приложения, вместо этого я минимизирую его. Приложение всегда должно быть открыто. Вот код, который я использую:

private void Browser_FormClosing(object sender, FormClosingEventArgs e)
    {
       e.Cancel = true;
       this.WindowState = FormWindowState.Minimized;
       this.ShowInTaskbar = true;

    }

Проблема теперь в том, что это предотвращает выключение компьютера для пользователей с правами не администратора. Что я могу сделать, чтобы компьютер мог выключиться, а пользователь не смог закрыть приложение?

Ответы [ 2 ]

7 голосов
/ 07 сентября 2010

Измените его так, чтобы оно не всегда отменялось, а сначала посмотрите на e.CloseReason, чтобы понять, почему вызывается событие.

См. Страницу MSDN для перечисления CloseReason для действительных значений.Он включает в себя одно под названием WindowsShutDown, и вы также можете захотеть взглянуть на TaskManagerClosing (если кто-то пытается закрыть приложение с помощью диспетчера задач, он, вероятно, действительно хочет, чтобы оно закрылось, а не просто свернулось).

4 голосов
/ 07 сентября 2010

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

Код для отключения кнопки закрытия:

protected override CreateParams CreateParams
    {
        get
        {
            CreateParams param = base.CreateParams;
            param.ClassStyle = param.ClassStyle | 0x200;
            return param;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...