我正在創建複雜的UserControl,應用程序在創建模式期間部分顯示它令我感到惱怒。
意味着最終用戶可以看到所有創建/拉伸工藝(有延遲出現放在這個用戶控件控制,梯度箱吸取他們填寫等)如何僅在完全創建時顯示控件(.NET)
我敢肯定有一些命令隱藏這個過程中,只顯示控制當它完全繪製 ...
有人可以建議如何存檔嗎?
我正在創建複雜的UserControl,應用程序在創建模式期間部分顯示它令我感到惱怒。
意味着最終用戶可以看到所有創建/拉伸工藝(有延遲出現放在這個用戶控件控制,梯度箱吸取他們填寫等)如何僅在完全創建時顯示控件(.NET)
我敢肯定有一些命令隱藏這個過程中,只顯示控制當它完全繪製 ...
有人可以建議如何存檔嗎?
MHH我不認爲存在的東西完全一樣,但也有這些東西:
你也可以調用invalidate(其中FO形式的RCE重繪)
這適用於初始化相當不錯,但如果你希望每次控制塗或僅創建
時不過,我沒有時間也我不明白關於如何攔截「繪圖前」和「繪圖後」的想法(繪圖,我認爲它在繪圖之前觸發,不確定)
確保您的UserControl已被標記爲雙緩衝。這確保了當用戶控件的客戶區需要繪製時,它會在離屏緩衝區中完成,然後在完成時將其傳送到屏幕。這使它成爲原子,並且在發生時不應該看到繪圖操作。要添加此使用您的UserControl構造函數中的以下內容...
SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.UserPaint, true);
更好,但仍然可以看到這種延遲繪畫效果......任何建議? – Maciej 2011-01-06 03:03:01
如果您的UserControl包含其他控件,那麼它們也需要執行雙緩衝。 – 2011-01-06 08:00:12
@Maciej:看他的評論,很重要。我發現他的建議比我的更有用,可能會讓你無法用代碼 – 2011-01-06 14:24:16
Re SuspendLayout - 在什麼控制我會解僱?在父母或目前正在創建 – Maciej 2011-01-06 02:49:42
我已經存檔與可見性的組合 - 現在好多了!謝謝 – Maciej 2011-01-06 03:30:06
什麼,順便說一句SuspendLayout應該被稱爲「你的控制包含很多控制」,如果父母被暫停,所有孩子都被暫停 – 2011-01-06 03:59:24