Я знаю, что я могу получить текущее состояние WindowState, но я хочу знать, произойдет ли какое-либо событие, которое будет срабатывать, когда пользователь попытается минимизировать форму.
Как определить, когда минимизируется форма окна?
Ответ 1
Вы можете использовать событие Resize и проверить свойство Forms.WindowState в событии.
private void Form1_Resize ( object sender , EventArgs e )
{
if ( WindowState == FormWindowState.Minimized )
{
// Do some stuff
}
}
Ответ 2
Чтобы попасть в до, форма была сведена к минимуму, вам придется подключиться к процедуре WndProc:
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xF020;
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case WM_SYSCOMMAND:
int command = m.WParam.ToInt32() & 0xfff0;
if (command == SC_MINIMIZE)
{
// Do your action
}
// If you don't want to do the default action then break
break;
}
base.WndProc(ref m);
}
Чтобы отреагировать после, форма была сведена к минимуму в случае события Resize
, поскольку другие ответы указывают (включены здесь для полноты):
private void Form1_Resize (object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
// Do your action
}
}
Ответ 3
Я не знаю конкретного события, но событие Resize
срабатывает, когда форма минимизирована, вы можете проверить FormWindowState.Minimized
в этом случае
Ответ 4
Для людей, которые ищут событие минимизации окон WPF:
Это немного другое. Для обратного вызова используйте WindowState:
private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
// Do some stuff
}
}
Событие для использования - StateChanged (вместо этого Resize):
public Main()
{
InitializeComponent();
this.StateChanged += Form1_Resize;
}