您的位置:首页 > 编程语言 > C#

c#捕获窗体的最大化最小化按钮的事件

2008-12-10 17:15 846 查看
c#捕获窗体的最大化最小化按钮的事件         protected override void OnResize(EventArgs e) 
        { 
            if(WindowState == FormWindowState.Maximized) 
            { 
                //最大化时所需的操作 
                MessageBox.Show("max");
            } 
            else if(WindowState == FormWindowState.Minimized) 
            { 
                //最小化时所需的操作
                MessageBox.Show("min");
            } 
        } 

*****但是问题出现了,最大化以后,内部的控件不能随anchar发生变化。。。。。,问题出在哪里呢?
于是又找到了一些代码,如下

虽然Form类没有提供Minimize的事件,但还是可以通过重载Deactive来实现
当Form失去焦点后,测试WindowState取得Form状态,若为Minimized既是最小化事件。
本例为最小化后隐藏窗口:


private void Form1_Deactivate(object sender, EventArgs e)




        

{


            if (this.WindowState == FormWindowState.Minimized)


                this.Visible = false;


        }
还有种方法更加直接,重载WndProc:


const int WM_SYSCOMMAND = 0x112;


const int SC_CLOSE = 0xF060;


const int SC_MINIMIZE = 0xF020;


const int SC_MAXIMIZE = 0xF030;


protected override void WndProc(ref Message m)






{


    if (m.Msg == WM_SYSCOMMAND)




    

{


        if (m.WParam.ToInt32() == SC_MINIMIZE)




        

{


            this.Visible = false;


            return;


        }


    }


    base.WndProc(ref m);


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# 测试