WinFom解決最小化最大化后重繪窗口造成閃爍的問題


網上兩種方案(可協同)

1 設置雙緩沖:


SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 雙緩沖

 

 

2 捕獲最大化最小化事件,臨時掛起布局邏輯

 

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.SuspendLayout();
this.WindowState = FormWindowState.Minimized;
this.ResumeLayout(false);
}


if (m.WParam.ToInt32() == SC_MAXIMIZE)
{
this.SuspendLayout();
this.WindowState = FormWindowState.Maximized;
this.ResumeLayout(false);
}

 

if (m.WParam.ToInt32() == SC_CLOSE)
{ //.....................
}


}
base.WndProc(ref m);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM