把WinForm的FormBorderStyle設定為None之后,雖然視窗無邊框了,但是怎么做到有系統自帶的最大化最小化影片呢?我知道這點可以實作,因為Visual Studio就能做到這一點,但是不知道是什么原理。
uj5u.com熱心網友回復:
可以調整回原來的樣子,最小化后再調回來this.FormBorderStyle = FormBorderStyle.Sizable;
this.WindowState = FormWindowState.Minimized;
this.FormBorderStyle = FormBorderStyle.None;
但是這樣會影響界面影片,可以在定義一個bool作為鎖來控制,
在AnimateWindow函式前后添加:
animLock = true;
AnimateWindow(this.Handle, 400, AW_ACTIVE | AW_VER_POSITIVE );
animLock = false;
然后之前的代碼可以改為:
if (animLock)
{
return;
}
this.FormBorderStyle = FormBorderStyle.Sizable;
this.WindowState = FormWindowState.Minimized;
this.FormBorderStyle = FormBorderStyle.None;
uj5u.com熱心網友回復:
對了,還有最小化之后從任務欄重新激活時的影片解決方案:監聽視窗的Activated事件,代碼如下:
private void MainForm_Activated(object sender, EventArgs e)
{
Console.WriteLine("MainForm_Activated");
if (animLock)
{
return;
}
this.FormBorderStyle = FormBorderStyle.Sizable;
this.WindowState = FormWindowState.Normal;
this.FormBorderStyle = FormBorderStyle.None;
}
上面的方法就會因為重新布局閃一下,影片是有,閃一下還不知道怎么解決
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249599.html
標籤:其他技術討論專區
