我讀到0123'事件應該在窗口句柄創建後觸發,但在之前窗口實際上變爲可見。大多數情況下,這似乎是對的。但是,我發現當我創建一個屬性設置爲FormWindowState.Maximized
(通過VS設計器或編程方式在構造函數中)的窗體時,該窗口在Load
事件觸發之前變得可見。例如:將WindowState設置爲Maximized原因窗口顯得過早
using System;
using System.Windows.Forms;
namespace MyApplication
{
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
WindowState = FormWindowState.Maximized;
}
protected override void OnLoad(EventArgs e)
{
MessageBox.Show("OnLoad - notice that the window is already visible");
base.OnLoad(e);
}
}
}
這又使得所顯示的形式閃爍很多,而其控制(這是本Form.Load
事件期間佈置)被調整,而該窗口是可見的。如果我沒有將狀態設置爲最大化,那麼在顯示窗口之前完成所有調整大小(這是我所期望的)。
我可以延遲設置WindowState
,直到Load
事件結束,但仍會導致大量閃爍,因爲窗口變得可見,然後所有控件都調整大小。
有什麼想法?
那'在負載情況下MessageBox.Show'將迫使形式展現。 – LarsTech 2012-03-21 14:34:25
調整'Load'事件中的控件大小有點可疑。爲什麼不依賴內置控件的調整大小機制,比如'Dock'或'Anchor'屬性或'TableLayoutPanel'?當我稍後手動調整窗口大小時,是否會手動調整控件的大小? – 2012-03-21 14:39:44
我也收到了這個。我在用戶會話之間保存了WindowState,以便表單可以調整大小等等,以便用戶以前擁有它,以及當我將WindowState設置爲最大化時,我會得到很多閃爍等。是否有解決方案來解決此問題? – 2017-11-27 18:52:34