C# 捕获窗体最小化、最大化事件

个人代码:

        private void HospitalInformation_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized && btnModify.Top==btnClear.Top)//捕获窗体最大化事件
            {
                btnModify.Top += 20;//更改按钮的位置
                btnClear.Top += 60;
                btnAdd.Top += 100;
                dgvData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//更改dgvData的AuotSizeColumnsMode属性
            }
            if (this.WindowState == FormWindowState.Normal)//捕获还原(Normal)事件
            {
                btnModify.Top -= 20;
                btnClear.Top -= 60;
                btnAdd.Top -= 100;
                dgvData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
            }
        }


转载一:http://blog.csdn.net/yin554393109/article/details/7915484

窗体的Deactivate事件,判断窗体状态是否为最小化,其他事件判断会出现问题:

[csharp]  view plain copy print ?
  1. private void MainForm_Deactivate(object sender, EventArgs e)  
  2.         {  
  3.             if (this.WindowState == FormWindowState.Minimized)  
  4.             {  
  5.                 this.notifyIcon1.Visible = true;  
  6.                 this.Hide();  
  7.                 this.ShowInTaskbar = false;  
  8.             }  
  9.         }  


notifyIcon单击显示

[csharp]  view plain copy print ?
  1. private void notifyIcon1_Click(object sender, EventArgs e)  
  2.         {  
  3.             this.Show();  
  4.             this.ShowInTaskbar = true;  
  5.             this.WindowState = FormWindowState.Normal;  
  6.             this.notifyIcon1.Visible = false;  
  7.         }  

转载二:http://blog.csdn.net/liuyuehui110/article/details/6513173

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#,窗体)