WindowStateで現在の状態を取得できることは知っていますが、ユーザーがフォームを最小化しようとしたときに発生するイベントがあるかどうかを知りたいです。
回答:
Resizeイベントを使用して、イベントの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
そのイベントで確認できます
イベントを最小化する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;
}