2013-07-25 45 views
1

我需要首先加載主窗體,並將第二種形式作爲對話框加載。當我嘗試以下操作時,proFileDialog加載,mnuForm保持隱藏狀態,直到我關閉proFileDialog,我可以將它綁定到一個計時器,但爲了學習c#,爲什麼它不按順序加載,以及如何使它的行爲適當?第二種形式首先加載,直到第一種形式關閉時主窗體纔可見

private void mnuForm_Load(object sender, EventArgs e) 
{ 
    this.FormBorderStyle = FormBorderStyle.None; 
    this.WindowState = FormWindowState.Maximized; 

    using (Form proFileDialog = new Form()) 
    { 
     proFileDialog.Text = "Some new form"; 
     proFileDialog.FormBorderStyle = FormBorderStyle.None; 
     proFileDialog.Opacity = 100; 
     proFileDialog.StartPosition = FormStartPosition.CenterScreen; 

     // form.Controls.Add(...); 
     proFileDialog.ShowDialog(); 
    } 
} 

回答

3

根據關於Order of Events in Windows Forms的MSDN文檔顯示控件在Load事件之後才顯示。

嘗試在您的mnuForm上訂閱Shown event並將您的代碼放在那裏。 這是mnuForm啓動時運行的最後一個事件,並且mnuForm應該已經可見。

此外,您profileDialog形式將只顯示一次:

所示事件只提出的第一個時間顯示的格式;隨後最大限度地減少,最大化,恢復,隱藏,顯示或無效和重新繪製不會引發此事件。

3

根據MSDN,FormLoad事件發生在窗體顯示之前。由於您將第二個窗體顯示爲對話框,因此它將在FormLoad事件完成之前停止在該行。 你可以做的是在主窗體將被調用,以顯示模態對話框創建一個函數:

public void ShowProfileDialog() 
{ 
    Form proFileDialog = new Form(); 
    profileDialog.ShowDialog() 
} 

當調用您的主要形式有:

mnuForm mainform = new mnuForm(); 
mnuForm.Show(); 
mnuForm.ShowProfileDialog(); 

通過這種方式,主要形式已完全加載,因此您可以顯示其他表單。

+0

一旦表單呈現,我無法找到觸發的事件,那麼正確的方法是什麼? –

+0

您可以檢查我的編輯 –

相關問題