Я знаю, що можу отримати поточний стан за допомогою WindowState, але я хочу знати, чи не відбудеться подія, яка активується, коли користувач намагається згорнути форму.
Я знаю, що можу отримати поточний стан за допомогою WindowState, але я хочу знати, чи не відбудеться подія, яка активується, коли користувач намагається згорнути форму.
Відповіді:
Ви можете використовувати подію Змінити розмір і перевірити властивість Forms.WindowState у події.
private void Form1_Resize ( object sender , EventArgs e )
{
if ( WindowState == FormWindowState.Minimized )
{
// Do some stuff
}
}
Щоб увійти до того, як форма буде зведена до мінімуму, вам доведеться підключитися до процедури 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
}
}
Я не знаю конкретної події, але Resize
подія спрацьовує, коли форма згорнута, ви можете перевірити наявність FormWindowState.Minimized
цієї події
Для людей, які шукають мінімізуючу подію Windows WPF:
Це трохи інакше. Для зворотного виклику використовуйте WindowState:
private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
// Do some stuff
}
}
Подією, яку слід використовувати, є StateChanged (замість цього змінити розмір):
public Main()
{
InitializeComponent();
this.StateChanged += Form1_Resize;
}