Отменить WinForm Свернуть? - PullRequest
       9

Отменить WinForm Свернуть?

5 голосов
/ 17 сентября 2010

У меня есть winform с отключенными кнопками minimalMaximizeClose, но, если кто-то нажимает на панели задач, она будет минимизирована.Я хочу предотвратить это.

Как мне это сделать?

Ответы [ 4 ]

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

Переопределите WndProc в вашей форме, прослушайте сообщения и сверните.

Добавьте этот код в вашу форму:

private const int WM_SYSCOMMAND = 0x0112; 
private const int SC_MINIMIZE = 0xf020; 

 protected override void WndProc(ref Message m) 
{ 
    if (m.Msg == WM_SYSCOMMAND) 
    { 
        if (m.WParam.ToInt32() == SC_MINIMIZE) 
        { 
            m.Result = IntPtr.Zero; 
            return; 
        } 
    } 
    base.WndProc(ref m); 
} 

Я изменил Код Роба находится в этой теме SO:
Как отключить кнопку свертывания в C #?

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

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

Вы, вероятно, могли бы поймать их, изменив его в событии SizeChanged и проверить WindowState , если для него установлено значение Минимизировано , затем установить его обратно Нормальный . Не самое элегантное решение, но должно работать.

например.

private void myForm_SizeChanged(object sender, System.EventArgs e)
{
   if (myForm.WindowState == FormWindowState.Minimized)
   {
       myForm.WindowState = FormWindowState.Normal;
   }
}
1 голос
/ 05 сентября 2017

Вы можете просто удалить кнопку сворачивания из окна:

добавьте приведенный ниже код в закрытый void метод InitializeComponent () класса Form:

            this.MinimizeBox = false;
1 голос
/ 17 сентября 2010

Если вам это подходит, просто скройте его на панели задач: ShowInTaskbar=false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...