winform 程序怎么拦截最大化最小化还原事件?

解决方案 »

  1.   

    拦截退出是在FormClosing里,应该类似吧
      

  2.   

    考虑 Resize 或 SizeChanged 事件。
      

  3.   

                if ( this.WindowState == FormWindowState.Maximized )
                {
                }
                if ( this.WindowState == FormWindowState.Minimized )
                {
                }
      

  4.   

    可以处理窗体SizeChanged事件private void Form1_SizeChanged(object sender, System.EventArgs e)
    {
    switch(this.WindowState)
    {
    case FormWindowState.Minimized://最小化操作
    //最小化时执行的操作
    break;
    case FormWindowState.Maximized://最大化操作
    //最大化时执行的操作
    break;
    case FormWindowState.Normal://默认窗口大小
    //恢复默认窗口大小时的操作
    break;
    }
    }
      

  5.   

     protected override void DefWndProc(ref Message m) {
                switch (m.Msg) {
                    case WM_SIZE:
                        if(m.WParam.ToInt32() == SIZE_MAXIMIZED) {
                            // 窗体最大化
                            Console.WriteLine("Maxmized");
                        }else if(m.WParam.ToInt32() == SIZE_MINIMIZED) {
                            // 窗体最小花
                            Console.WriteLine("Minimized");
                        }else {
                            // 其他
                            base.DefWndProc(ref m);
                        }
                        break;
                    default:
                        base.DefWndProc(ref m);
                        break;
                }
            }        private const int WM_SIZE = 0x0005;
            const int SIZE_MAXIMIZED = 2;
            const int SIZE_MINIMIZED = 1;
      

  6.   

    这个是windows的消息机制,属于底层的东西。
    如果用于拦截就用它,resize,change事件是在改变后触发的。
      

  7.   

    //禁止最大化和最小化
    MaximizeBox = false;
    MinimizeBox = false;