我有一個.net 4.0 winforms項目,我需要以編程方式設置一個窗口(System.Windows.Forms.Form)的邊界(又名大小),並添加/刪除控件/同時,沒有可見閃爍。該表單不是用戶可調整大小的,其大小更改的唯一位置是this.Bounds = foo/this.DesktopBounds = foo/...調用。如何防止在編程調整大小時重新繪製託管winform?
我已經閱讀了關於通過使用p/invoke發送WM_SETREDRAW以及關於SuspendRedraw/SuspendLayout和朋友來防止閃爍。我仍然看到閃爍發生,並將該問題確定下來:
即使禁用重繪,Windows也會在設置其邊界/大小時重新繪製窗體。
我想這不是由窗體本身引起的,而是由窗口管理器以某種方式引起的?
那麼 - 有沒有一種方法可以絕對防止在任何情況下重新繪製任何東西,然後在以後手動重新啓用重繪和刷新?種類「凍結窗口並顯示快照」,更改內容,以及「用1更新窗口(包括位置和大小)更換快照」?
謝謝,歡呼聲, 添
謝謝!不幸的是我已經嘗試過這個屬性(在OP中忘記提及)。我可能還需要補充說我正在使用DevExpress組件;他們重寫窗體(XtraForm) - 可能是問題的一部分(他們以某種方式覆蓋SuspendDraw/ResizeRedraw/...屬性)? –