2012-11-12 117 views
2

如何禁用Aero編程下窗口的「打開」動畫?跳過Aero窗口動畫

當打開一個新窗體時,它會「彈出」(淡入+輕微縮放轉換)。 我想停止這個動畫並立即顯示窗口。

我已經嘗試將窗體的Location屬性設置爲offscreen外的某個地方,然後調用Show(),然後將它移動到正確的位置。 但這並沒有幫助,動畫將繼續。

也許有一些隱藏的屬性,我可以設置?

我不想全局禁用打開/關閉/最小化/最大化動畫! 我只想跳過窗口的「窗口打開」動畫。

我已經在Form.Show()之後直接調用了ShowWindow(...)的單個和多個調用。但是無論我傳遞什麼參數,都不會中止開場動畫。

+1

爲什麼要這麼做? – BoltClock

回答

1

我懂了!有的用的ShowWindow試圖左右後,BorderStyles我發現我的精確解:

  1. 更改初始 「FormBorderStyle」 的形式對其中的一個特性:
    • FixedToolWindow
    • SizeableToolWindow
  2. 將事件處理程序添加到窗體「顯示」事件。
  3. 在事件處理程序中,將FormBorderStyle更改爲「Sizeable」(或任何其他)。

現在的技巧是「none」和「* toolwindow」邊框將禁止該窗體的打開/彈出動畫。只要表格被顯示,邊框樣式就會改變,賦予其原始功能(控制欄中的圖標,最小化/最大化按鈕等...)

編輯:對於每個想要的人爲了試試這個,我必須指出,這個可以用PInvoke命令完成時,會與窗口的實際大小相關聯。 如果您依賴正確的窗口大小,請務必在完成此操作後將窗口大小調整爲預期的大小。

+0

這也適用: this.FormBorderStyle = FormBorderStyle.None; this.Hide(); – Dave

0

這是Windows視覺效果的一部分,可以使用SystemParametersInfo方法進行調整。

+0

感謝您的回答。但在我寫的問題中,我只想禁用MY窗口的動畫 - 不是系統範圍的。 – riki

0

我發現動畫只在第一次顯示錶單時發生。

因此,這裏的竅門:

var form = new Form(); 
form.Show(); 
form.Hide(); 
form.Show(); 

我只能在Windows 8

0

可以前後改變風格,像這樣測試它,這將阻止淡出動畫。

 this.FormBorderStyle = FormBorderStyle.Sizable; 
     this.Show(); 

     // Do whatever 

     this.FormBorderStyle = FormBorderStyle.Sizable; 
     this.Show();